写出一个爬虫爬取豆瓣的代码
时间: 2024-12-22 15:12:31 浏览: 10
在Python中,使用Scrapy库是一个常见的选择来编写爬虫抓取豆瓣数据。这里提供一个简单的例子,假设我们想要爬取电影详情页面的基本信息。首先,你需要安装`scrapy`和`lxml`库(如果还没有的话)。然后,创建一个新的Scrapy项目并配置基本设置。
```python
# 导入必要的模块
import scrapy
# 创建一个Spider类
class DoubanMovieSpider(scrapy.Spider):
name = 'douban_movie'
start_urls = ['https://movie.douban.com/top250'] # 起始URL: 首页top250电影列表
def parse(self, response): # 解析函数
movies = response.css('div.item') # CSS选择器获取电影信息块
for movie in movies:
title = movie.css('span.title a::text').get() # 获取电影标题
rating = movie.css('span.rating_num::text').get() # 获取评分
link = movie.css('span.title a::attr(href)').get() # 获取链接到电影详情的URL
yield {
'title': title,
'rating': rating,
'link': response.urljoin(link), # 使用response.urljoin拼接完整链接
}
# 分页处理,如果存在下一页,继续请求
next_page = response.css('a.next::attr(href)').get()
if next_page is not None:
next_page_url = response.urljoin(next_page)
yield response.follow(next_page_url, self.parse) # 调用自身解析下一个页面
# 运行爬虫
if __name__ == '__main__':
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess({
'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',
})
process.crawl(DoubanMovieSpider)
process.start() # 不要忘记启动爬虫进程
阅读全文