python scrapy框架爬虫豆瓣t250
要使用Scrapy框架爬取豆瓣TOP250电影列表,你需要定义一个Scrapy爬虫(spider)来抓取页面,并定义一个Item Pipeline来处理数据。以下是一个简单的示例:
首先,安装Scrapy:
pip install scrapy
接下来,创建一个新的Scrapy项目:
scrapy startproject douban_movies
在项目目录中创建一个新的爬虫文件 douban_spider.py
:
import scrapy
from scrapy.selector import Selector
class DoubanMovieSpider(scrapy.Spider):
name = 'douban_spider'
allowed_domains = ['douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
for row in response.css('ol.grid_view li'):
movie = {
'name': row.css('div.info a span::text').extract_first(),
'rating': row.css('div.info span.rating_num::text').extract_first(),
'url': row.css('div.info a::attr(href)').extract_first(),
}
yield movie
next_page = response.css('span.next a::attr(href)').extract_first()
if next_page:
yield response.follow(next_page, self.parse)
在项目目录中的 pipelines.py
文件中,你可以实现数据持久化的逻辑:
class DoubanMoviePipeline(object):
def __init__(self):
self.file = open('movies.csv', 'w')
self.file.write('Name,Rating,URL\n')
def process_item(self, item, spider):
line = f"{item['name']},{item['rating']},{item['url']}\n"
self.file.write(line)
return item
def close_spider(self, spider):
self.file.close()
在项目的 settings.py
文件中启用管道:
ITEM_PIPELINES = {
'douban_movies.pipelines.DoubanMoviePipeline': 300,
}
最后,运行爬虫:
scrapy crawl douban_spider
这个爬虫会抓取豆瓣TOP250的电影名称、评分以及对应的URL,并将结果保存到CSV文件中。注意,实际爬取数据时应遵守目标网站的robots.txt协议,并尊重网站的爬虫政策。
评论已关闭