1. 程式人生 > >用scrapy框架爬取映客直播用戶頭像

用scrapy框架爬取映客直播用戶頭像

xpath print main back int open for pri nbsp

1. 創建項目 scrapy startproject yingke cd yingke

2. 創建爬蟲 scrapy genspider live

3. 分析http://www.inke.cn/hotlive_list.html網頁的response,找到響應裏面數據的規律,並找到的位置,通過response.xpath()獲取到

4. 通過在pipline裏面進行數據的清洗,過濾,保存

5. 實現翻頁,進行下一頁的請求處理

6. 運行爬蟲 scrapy crawl live

說明:這個程序直接在parse方法裏面進行圖片保存,保存在本地,正常使用yield關鍵字進行在pipline中保存。

#
-*- coding: utf-8 -*- import scrapy import re class LiveSpider(scrapy.Spider): name = live allowed_domains = [inke.cn] start_urls = [http://www.inke.cn/hotlive_list.html?page=1] def parse(self, response): div_list = response.xpath("//div[@class=‘list_box‘]") for
div in div_list: item = {} img_src = div.xpath("./div[@class=‘list_pic‘]/a/img/@src").extract_first() item["user_name"] = div.xpath( "./div[@class=‘list_user_info‘]/span[@class=‘list_user_name‘]/text()").extract_first() print(item["user_name"
]) yield scrapy.Request( # 發送詳情頁的請求 img_src, callback=self.parse_img, meta={"item": item} ) # 下一頁 now_page = re.findall("page=(.*)", response.request.url)[0] now_page= int(now_page) next_url = "http://www.inke.cn/hotlive_list.html?page={}".format(str(now_page+ 1)) yield scrapy.Request( next_url, callback=self.parse ) def parse_img(self, response): user_name = response.meta["item"]["user_name"] with open("images/{}.png".format(user_name), "wb") as f: f.write(response.body)

運行效果:

技術分享

用scrapy框架爬取映客直播用戶頭像