请你用Python编写一个功能强大的爬虫,功能至少要有图片爬取等。爬取豆瓣2023年度书籍信息
时间: 2025-01-01 07:42:32 浏览: 8
创建一个功能强大的Python爬虫需要分几个步骤,这里我会给出一个基本的框架,用于爬取豆瓣2023年度书籍的信息,包括书名、作者、评分和简介。我们将使用`requests`库获取HTML内容,然后用`BeautifulSoup`解析HTML。由于豆瓣网站的反爬策略,实际操作可能需要处理验证码或者使用代理IP,这里仅展示基础部分。
```python
import requests
from bs4 import BeautifulSoup
import time
def get_html(url):
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'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.text
else:
print(f"Error: {response.status_code}")
return None
def parse_books(html):
soup = BeautifulSoup(html, 'lxml')
# 查找书籍列表元素,具体CSS选择器可能会因网页结构变化而改变
book_list = soup.select('.book-list li')
books = []
for item in book_list:
title = item.select_one('.title a').text.strip()
author = item.select_one('.author').text.strip()
rating = float(item.select_one('.rating_num').text)
description = item.select_one('.pub-intro p').text.strip()
books.append({
'title': title,
'author': author,
'rating': rating,
'description': description
})
return books
def main():
url = "https://book.douban.com/top250?start=0&filter=" # 豆瓣图书排行榜URL
html = get_html(url)
if html is not None:
books = parse_books(html)
for book in books:
print(f"书名: {book['title']}\n作者: {book['author']}\n评分: {book['rating']}\n简介: {book['description']}\n")
# 如果需要保存数据,可以将books写入文件或数据库
save_books_to_file(books)
# 添加延时以避免频繁请求导致封禁
time.sleep(2)
if __name__ == "__main__":
main()
```
请注意,这个示例假设了豆瓣年度图书排行榜的HTML结构,实际抓取过程中可能需要不断更新选择器以匹配页面布局的变化。此外,上述代码未包含异常处理以及处理翻页等功能,实际项目中会更复杂一些。
阅读全文