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

看到下面的東西、證明爬取成功了:



最後會生成這麼一個文件~


注意:因爲本網站找不到迅雷下載的網址,所以無法實現下載,如果有學習者能夠找到辦法。望告知!謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章