scrapy爬虫入门:爬取《id97》电影

id97下电影

我们本次要爬取的网站:http://www.id97.com/movie


1、打开终端:scrapy startproject movieprject

2、scrapy genspider movie

形成的目录结构如下:


3、setting里面设置
第19行:
USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'
第22行:
ROBOTSTXT_OBEY = False
第67-69行:
ITEM_PIPELINES = {
   'movieproject.pipelines.MovieprojectPipeline': 300,
}
4、items数据
获取第一个页面的数据:
海报
名字
豆瓣评分
电影类型(什么类型)
第二个页面的数据:
导演
编剧
代码如下:
import scrapy


class MovieprojectItem(scrapy.Item):
    # define the fields for your item here like:
    # 电影海报
    post = scrapy.Field()
    # 电影名字
    name = scrapy.Field()
    # 豆瓣评分
    score = scrapy.Field()
    # 电影类型
    _type = scrapy.Field()


    # 导演
    director = scrapy.Field()
    # 编剧
    editor = scrapy.Field()
    # 主演
    actor = scrapy.Field()
    # 片长
    long_time = scrapy.Field()
    # 介绍
    introduce = scrapy.Field()
    # 下载链接
    # download_url = scrapy.Field()
5、movie.py
def parse()
首先找到所有的div
遍历div依次找到每一个信息
①创建一个item
②获取海报
③获取电影的名字(在图片里面有名字)
④获取评分的xpath路径,把空格与-干掉
⑤获取类型(在第4天讲过拼接两个类型,会把一个div里面的内容拼接到一起)
还有其他信息、要去下一页获取
①获取详细页面链接:
②向详情页发送请求yield ,通过meta将item传递给下面的函数:meta={‘键随便指定’,‘传递的直为item’}
def parse_detail()
①通过request怎么传递item
item=response.meta['item']
②获取导演信息,用response.xpath获取
③获取编制
④获取演员(空格去掉)
⑤片长 long_time
⑥电影介绍
yield item
代码如下:
def parse_detail(self, response):
        # 通过response的meta属性,获取到参数item
        item = response.meta['item']
        item['director'] = response.xpath('//div[@class="col-xs-8"]/table/tbody/tr[1]/td[2]/a/text()').extract_first()
        item['editor'] = response.xpath('//div[@class="col-xs-8"]/table/tbody/tr[2]/td[2]/a/text()').extract_first()
        # '张静初 / 龙品旭 / 黎兆丰 / 王同辉 / 张国强 / 叶婉娴 / 丽娜 / 吴海燕 / 吴若林 / 喻引娣 显示全部'
        item['actor'] = response.xpath('//div[@class="col-xs-8"]/table/tbody/tr[3]/td[2]').xpath('string(.)').extract_first().replace(' ', '').replace('显示全部', '')
        # 片长 
        lala = response.xpath('//div[@class="col-xs-8"]/table/tbody/tr[8]/td[2]/text()').extract_first()
        if lala and ('分钟' in lala):
            item['long_time'] = lala
        else:
            item['long_time'] = ''
        # 电影介绍
        item['introduce'] = response.xpath('//div[@class="col-xs-12 movie-introduce"]').xpath('string(.)').extract_first().replace('\u3000', '').replace('展开全部', '')
        # 电影链接
        # item['download_url'] = response.xpath('')
        yield item

看到下面的东西、证明爬取成功了:



最后会生成这么一个文件~


注意:因为本网站找不到迅雷下载的网址,所以无法实现下载,如果有学习者能够找到办法。望告知!谢谢!

猜你喜欢

转载自blog.csdn.net/qq_29784441/article/details/80615287
今日推荐