利用Python语言对豆瓣电影top250信息进行爬取,需要爬取的信息包括电影海报url、电影名称、导演、编剧、主演、电影类型、国家地区、语言、上映日期片长、IMDB编号。 全部代码
时间: 2023-09-15 12:21:47 浏览: 140
好的,以下是Python爬取豆瓣电影top250信息的完整代码:
```python
import scrapy
class DoubanTop250Spider(scrapy.Spider):
name = 'douban_top250_spider'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
# 获取电影列表
movie_list = response.xpath('//div[@class="article"]//ol[@class="grid_view"]/li')
# 遍历电影列表
for movie in movie_list:
# 电影海报url
poster_url = movie.xpath('.//div[@class="pic"]/a/img/@src').extract_first()
# 电影名称
name = movie.xpath('.//div[@class="hd"]/a/span[@class="title"]/text()').extract()
# 导演、编剧、主演
info_list = movie.xpath('.//div[@class="bd"]/p[1]/text()').extract()
director, screenwriter, actor = self.parse_info(info_list)
# 电影类型、国家地区、语言、上映日期、片长、IMDB编号
info_list = movie.xpath('.//div[@class="bd"]/p[2]/text()').extract()
movie_type, country, language, release_date, duration, imdb_id = self.parse_info(info_list)
# 构造电影信息字典
movie_info = {
'poster_url': poster_url,
'name': name,
'director': director,
'screenwriter': screenwriter,
'actor': actor,
'movie_type': movie_type,
'country': country,
'language': language,
'release_date': release_date,
'duration': duration,
'imdb_id': imdb_id
}
# 输出电影信息
print(movie_info)
# 获取下一页的链接
next_url = response.xpath('//span[@class="next"]/a/@href')
if next_url:
yield scrapy.Request(url=response.urljoin(next_url.extract_first()), callback=self.parse)
def parse_info(self, info_list):
# 解析电影信息
info_dict = {
'导演': '',
'编剧': '',
'主演': '',
'类型': '',
'制片国家/地区': '',
'语言': '',
'上映日期': '',
'片长': '',
'IMDb链接': ''
}
for info in info_list:
info = info.strip()
if info.startswith('导演'):
info_dict['导演'] = info[3:]
elif info.startswith('编剧'):
info_dict['编剧'] = info[3:]
elif info.startswith('主演'):
info_dict['主演'] = info[3:]
elif info.startswith('类型'):
info_dict['类型'] = info[3:]
elif info.startswith('制片国家/地区'):
info_dict['制片国家/地区'] = info[7:]
elif info.startswith('语言'):
info_dict['语言'] = info[3:]
elif info.startswith('上映日期'):
info_dict['上映日期'] = info[5:]
elif info.startswith('片长'):
info_dict['片长'] = info[3:]
elif info.startswith('IMDb链接'):
info_dict['IMDb链接'] = info[9:]
return info_dict['导演'], info_dict['编剧'], info_dict['主演'], \
info_dict['类型'], info_dict['制片国家/地区'], info_dict['语言'], \
info_dict['上映日期'], info_dict['片长'], info_dict['IMDb链接']
```
这段代码使用了Scrapy框架,可以爬取豆瓣电影top250的信息,并输出到控制台。你可以根据自己的需求对代码进行修改和扩展。
阅读全文