python爬取豆瓣最受关注图书榜,获取图书图片,名字,详情,评分,评价人数,纸质版链接等
时间: 2024-04-06 15:33:12 浏览: 78
好的,这是一个比较复杂的任务,需要使用Python的Requests库进行网络请求,以及使用BeautifulSoup库进行HTML页面解析。以下是一个简单的代码示例,可以获取豆瓣最受关注图书榜的前20本图书的信息:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://book.douban.com/chart?subcat=F'
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.36 Edge/16.16299'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
book_list = soup.find_all('div', class_='pl2')
for i in range(20):
book_info = book_list[i].find('a')
book_url = book_info['href']
book_name = book_info['title']
book_img = book_list[i].find('img')['src']
book_rating = book_list[i].find('span', class_='rating_nums').string
book_review_count = book_list[i].find('span', class_='pl').string.strip()[1:-4]
try:
book_paperback_url = book_list[i].find('span', text='纸质版:').find_next_sibling('a')['href']
except AttributeError:
book_paperback_url = ''
print('书名:', book_name)
print('图片链接:', book_img)
print('豆瓣链接:', book_url)
print('评分:', book_rating)
print('评价人数:', book_review_count)
print('纸质版链接:', book_paperback_url)
```
需要注意的是,如果要获取更多的图书信息,可以通过翻页的方式,不断发送网络请求,获取更多的HTML页面信息。同时,由于豆瓣网站对网络爬虫有一定的反爬虫机制,因此在发送网络请求时,需要设置合适的headers,避免被禁止访问。
阅读全文