id97下電影
我們本次要爬取的網站:http://www.id97.com/movie
1、打開終端:scrapy startproject movieprject
2、scrapy genspider movie
形成的目錄結構如下:
第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.pydef 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
看到下面的東西、證明爬取成功了:
最後會生成這麼一個文件~
注意:因爲本網站找不到迅雷下載的網址,所以無法實現下載,如果有學習者能夠找到辦法。望告知!謝謝!