爬取豆瓣读书 Top 250,保存到本地【2021】
话不多说,python入门练手,注释可以直接删掉。有的图书没有推荐语,后延之后乱套了,解决方法就是把推荐语删掉 ::aru:cryingface:: 。代码高亮用的插件,比内置的好看点,针不戳!
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('写入完成')
收工,照葫芦画瓢。 ::aru:bigeye::