访问豆瓣电影Top250获取每部电影的导演、主演,使用scrapy和xpath
时间: 2024-05-18 18:18:42 浏览: 136
豆瓣电影Top250,Scrapy爬取
好的,这是一个比较详细的 Scrapy 爬虫示例,用于抓取豆瓣电影 Top 250 的电影信息,包括电影名称、导演、主演等。我们将使用 Scrapy 和 XPath 来实现这个爬虫。
首先,我们需要创建一个 Scrapy 项目:
```bash
scrapy startproject douban_movies
```
然后,在 `douban_movies/spiders` 目录下创建一个名为 `movies.py` 的文件,并将以下代码复制并粘贴:
```python
import scrapy
class MoviesSpider(scrapy.Spider):
name = "movies"
allowed_domains = ["movie.douban.com"]
start_urls = [
"https://movie.douban.com/top250"
]
def parse(self, response):
# 获取所有电影的 URL
movie_urls = response.xpath('//div[@class="hd"]/a/@href')
for movie_url in movie_urls:
yield scrapy.Request(movie_url.extract(), callback=self.parse_movie)
# 获取下一页的 URL
next_page_url = response.xpath('//span[@class="next"]/a/@href')
if next_page_url:
yield scrapy.Request(next_page_url.extract()[0], callback=self.parse)
def parse_movie(self, response):
# 获取电影名称
movie_name = response.xpath('//h1/span[@property="v:itemreviewed"]/text()')
# 获取导演
director = response.xpath('//a[@rel="v:directedBy"]/text()')
# 获取主演
actors = response.xpath('//a[@rel="v:starring"]/text()')
yield {
'name': movie_name.extract()[0],
'director': director.extract(),
'actors': actors.extract()
}
```
以上代码中,我们定义了一个名为 `MoviesSpider` 的爬虫,并设置了爬取的起始 URL。在 `parse` 方法中,我们使用 XPath 选择器获取每个电影的 URL,并通过 `scrapy.Request` 方法发送请求,获取每个电影的详细信息。在 `parse_movie` 方法中,我们使用 XPath 选择器获取电影名称、导演和主演,并将它们存储在一个 Python 字典中,最终将这个字典作为结果返回。
最后,我们需要在命令行中运行爬虫:
```bash
scrapy crawl movies -o movies.csv
```
以上命令将启动 `MoviesSpider` 爬虫,并将结果输出到 `movies.csv` 文件中。你可以使用任何文本编辑器打开这个文件,查看所有电影的名称、导演和主演。
阅读全文