话不多说,python入门练手,注释可以直接删掉。有的图书没有推荐语,后延之后乱套了,解决方法就是把推荐语删掉 。代码高亮用的插件,比内置的好看点,针不戳!

import requests
from bs4 import BeautifulSoup
import lxml
import csv

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36 Edg/91.0.864.59'
}

fw = open('douban250.csv', 'w', newline='', encoding='utf-8')
writer = csv.writer(fw)
writer.writerow(('书名','链接','作者','评分'))
# writer.writerow(('书名','链接','作者','推荐语'))

urls = ['https://book.douban.com/top250?start={}'.format(i) for i in range(0, 250, 25)]
# for l in range(10):
#     页码 = l * 25
#     allurl = url.format(页码)

for url in urls:
    print(f'爬取链接:{url}')
    r = requests.get(url, headers=headers)
    bs = BeautifulSoup(r.text, 'lxml')
    取书名 = bs.select('div.pl2 a')
    取作者 = bs.select('p.pl')
    #取推荐语 = bs.select('span.inq')
    取评分 = bs.select('span.rating_nums')

    #for i, j, k in zip(取书名, 取作者, 取推荐语):
    for i, j, k in zip(取书名, 取作者, 取评分):
        书名结果, 作者结果, 评分结果 = \
            i.get_text('', strip=True),\
            j.get_text('', strip=True),\
            k.get_text('', strip=True)
        链接 = i['href']

        #print('书名:{}\n链接:{}\n作者:{}\n' .format(书名结果 , 链接, 作者结果))
        #print('-'*15 + '\n')
        writer.writerow((书名结果, 链接, 作者结果, 评分结果))
print('写入完成')

收工,照葫芦画瓢。

最后修改:2021 年 07 月 02 日 10 : 23 AM