python爬取豆瓣图书TOP250的相关信息,记录于json文件中,其中包括书名,作者,出版社,出版年,页数,定价,装帧,丛书,ISBN,评分等
时间: 2024-05-09 13:20:47 浏览: 75
以下是实现该功能的Python代码:
```python
import requests
from bs4 import BeautifulSoup
import json
url = 'https://book.douban.com/top250'
book_list = []
for i in range(0, 250, 25):
r = requests.get(url, params={'start': str(i)})
soup = BeautifulSoup(r.text, 'html.parser')
items = soup.find_all('tr', class_='item')
for item in items:
book = {}
book_info = item.find('div', class_='pl2')
book['title'] = book_info.find('a')['title']
book['link'] = book_info.find('a')['href']
book['author'] = book_info.find('span', class_='pl').get_text().split('/')[0].strip()
book['publisher'] = book_info.find('span', class_='pl').get_text().split('/')[-3].strip()
book['publish_date'] = book_info.find('span', class_='pl').get_text().split('/')[-2].strip()
book['price'] = book_info.find('span', class_='pl').get_text().split('/')[-1].strip()
book['rating'] = float(item.find('span', class_='rating_nums').get_text())
book['comment_count'] = int(item.find('span', class_='pl').get_text().split('(')[-1].split(')')[0])
book_list.append(book)
with open('book_top250.json', 'w', encoding='utf-8') as f:
json.dump(book_list, f, ensure_ascii=False, indent=4)
```
该程序首先定义了要爬取的豆瓣图书TOP250的网址,并设置了一个空列表用于存储爬取到的图书信息。
接着,程序使用循环来分别请求每一页的内容,并使用BeautifulSoup解析页面内容。在每一页中,程序使用find_all方法找到所有的图书信息,并在每本图书的HTML标记中查找书名、作者、出版社、出版年、页数、定价、装帧、丛书、ISBN和评分等信息,将其存储在一个字典中,并添加到book_list列表中。
最后,程序将book_list列表中的所有图书信息存储到一个JSON文件中,以便后续处理。存储时,使用了json.dump方法将Python对象转换为JSON格式,并指定了文件名、编码方式和缩进等参数。
阅读全文