scrapy爬取猫眼电影详细数据代码
时间: 2023-09-27 11:08:51 浏览: 107
爬取猫眼电影的排行榜前100名
3星 · 编辑精心推荐
好的,这里是使用Scrapy爬取猫眼电影详细数据的代码:
```python
import scrapy
class MaoyanSpider(scrapy.Spider):
name = 'maoyan'
allowed_domains = ['maoyan.com']
def start_requests(self):
url = 'https://maoyan.com/films?showType=3'
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
movies = response.xpath('//div[@class="movie-item-hover"]')
for movie in movies:
movie_url = movie.xpath('./a/@href').extract_first()
yield scrapy.Request(url=response.urljoin(movie_url), callback=self.parse_detail)
def parse_detail(self, response):
movie = {}
movie['title'] = response.xpath('//h1/text()').extract_first().strip()
movie['category'] = response.xpath('//li[contains(text(),"类型")]/a/text()').extract_first().strip()
movie['release_date'] = response.xpath('//li[contains(text(),"上映时间")]/text()').extract_first().strip()
movie['score'] = response.xpath('//span[@class="stonefont"]/text() | //span[@class="score-num"]/text() | //div[@class="score"]/span/text()'
).extract_first().strip()
movie['actors'] = response.xpath('//li[contains(text(),"主演")]/a/text()').extract()
movie['box_office'] = response.xpath('//li[contains(text(),"累计票房")]/span/text()').extract_first()
yield movie
```
解释一下代码:
1. 在`start_requests`方法中,指定了要爬取的页面,并调用`parse`方法;
2. 在`parse`方法中,使用XPath选取每个电影的链接,并发送请求,通过`callback`指定要调用的函数`parse_detail`;
3. 在`parse_detail`方法中,使用XPath选取详细信息,并将结果存入字典`movie`中,最后使用`yield`返回字典。注意:由于不同电影页面上的评分信息的XPath路径可能不同,所以这里使用了3个不同的XPath路径,以保证能够正确选取评分信息。
阅读全文