使用python自定义页数爬取豆瓣图书信息,包括标题,作者,类别,封面链接,日期,出版社,图书链接等信息,并存储为csv文件
时间: 2024-06-11 14:10:22 浏览: 66
以下是一个示例代码,可以自定义页数来爬取豆瓣图书信息,并将结果存储为csv文件。
```python
import requests
from bs4 import BeautifulSoup
import csv
# 自定义页数,每页20个图书信息
page_num = 3
# 设置请求头信息,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 存储结果的列表
book_list = []
# 循环爬取每一页的图书信息
for i in range(page_num):
url = f'https://book.douban.com/top250?start={i*20}'
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
book_items = soup.find_all('tr', class_='item')
# 循环解析每一本图书的信息
for item in book_items:
book_dict = {}
book_dict['title'] = item.find('div', class_='pl2').find('a')['title']
book_dict['author'] = item.find('p', class_='pl').get_text().split('/')[0].strip()
book_dict['category'] = item.find('p', class_='pl').get_text().split('/')[-3].strip()
book_dict['cover_url'] = item.find('a').find('img')['src']
book_dict['pub_date'] = item.find('p', class_='pl').get_text().split('/')[-2].strip()
book_dict['publisher'] = item.find('p', class_='pl').get_text().split('/')[-1].strip()
book_dict['book_url'] = item.find('a')['href']
book_list.append(book_dict)
# 将结果存储为csv文件
with open('douban_book_top250.csv', 'w', encoding='utf-8-sig', newline='') as f:
writer = csv.DictWriter(f, fieldnames=['title', 'author', 'category', 'cover_url', 'pub_date', 'publisher', 'book_url'])
writer.writeheader()
for book in book_list:
writer.writerow(book)
```
注意,由于豆瓣网站的反爬虫机制,可能需要使用代理或者加入一些延时等策略来降低被封禁的风险。此外,爬取数据时应遵守网站的相关规定和法律法规。
阅读全文