用python网络爬虫可靠的爬取https://book. douban.com/top250 上共计250条信息,按照书名、国籍、作者、出版社、出版时间、售价、评分、评价人数以及评论共计9个字段进行存储
时间: 2023-12-28 09:18:43 浏览: 71
python爬虫,爬取用户信息以及人际拓扑关系,爬虫框架使用scrapy,数据存储使用mongo
这是一个比较大的爬取任务,涉及到网页的解析、数据提取和存储等多个方面。以下是一个基本的爬虫流程,但具体实现会因网页结构的变化而略有不同。
1. 发送 HTTP 请求,获取网页源代码。
可以使用 Python 中的 requests 库,常用的是 GET 方法,例如:
```python
import requests
url = 'https://book.douban.com/top250'
response = requests.get(url)
html = response.content
```
2. 解析网页内容,提取所需数据。
可以使用 BeautifulSoup 库等解析工具,注意需要根据实际网页结构进行选择器的编写。例如,以下代码可以提取网页中的书名、作者、出版社等信息:
```python
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
books = soup.find_all('div', class_='pl2')
for book in books:
title = book.find('a').get('title')
info = book.find('p', class_='pl').get_text()
author = info.split('/')[0].strip()
publisher = info.split('/')[-3].strip()
pub_time = info.split('/')[-2].strip()
price = info.split('/')[-1].strip()
rating_num = book.parent.find('span', class_='rating_nums').get_text()
rating_people = book.parent.find('span', class_='pl').get_text()
comment_num = rating_people.split()[1].strip().strip('()')
# TODO: 进行数据存储
```
3. 存储数据。
可以使用 Python 自带的文件操作或者数据库等方式存储数据,例如:
```python
import csv
fields = ['title', 'author', 'publisher', 'pub_time', 'price', 'rating_num', 'comment_num']
filename = 'books.csv'
with open(filename, 'w', newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for book in books:
title = book.find('a').get('title')
info = book.find('p', class_='pl').get_text()
author = info.split('/')[0].strip()
publisher = info.split('/')[-3].strip()
pub_time = info.split('/')[-2].strip()
price = info.split('/')[-1].strip()
rating_num = book.parent.find('span', class_='rating_nums').get_text()
rating_people = book.parent.find('span', class_='pl').get_text()
comment_num = rating_people.split()[1].strip().strip('()')
# 写入 CSV 文件
writer.writerow({'title': title, 'author': author, 'publisher': publisher,
'pub_time': pub_time, 'price': price, 'rating_num': rating_num,
'comment_num': comment_num})
```
注意:为了做到数据的准确性和可靠性,爬虫需要加上程序的容错处理机制,例如对 HTTP 请求的状态码进行判断,对数据的处理过程中进行异常处理等。此外,爬取站点需要遵守其 robots.txt 协议,避免过度访问造成其服务器压力过大。
阅读全文