摘要:百度云搜索,搜各種資料搜網盤,搜各種資料表達式表示向下查找層指定標簽,如表示查找所有標簽表示向下查找一層指定的標簽表示查找指定屬性的值可以連綴如屬性名稱屬性值表示查找指定屬性等于指定值的標簽可以連綴,如查找名稱等于指定名稱的標簽獲取標簽文本
xpath表達式
//x?表示向下查找n層指定標簽,如://div 表示查找所有div標簽
/x?表示向下查找一層指定的標簽
/@x?表示查找指定屬性的值,可以連綴如:@id @src
[@屬性名稱="屬性值"]表示查找指定屬性等于指定值的標簽,可以連綴 ,如查找class名稱等于指定名稱的標簽?
/text()?獲取標簽文本類容
[x]?通過索引獲取集合里的指定一個元素
1、將xpath表達式過濾出來的結果進行正則匹配,用正則取最終內容
最后.re("正則")
xpath("http://div[@class="showlist"]/li//img")[0].re("alt="(w+)")
2、在選擇器規(guī)則里應用正則進行過濾
[re:正則規(guī)則]
xpath("http://div[re:test(@class,?"showlist")]").extract()
實戰(zhàn)使用Scrapy獲取一個電商網站的、商品標題、商品鏈接、和評論數
分析源碼
第一步、編寫items.py容器文件
我們已經知道了我們要獲取的是、商品標題、商品鏈接、和評論數
在items.py創(chuàng)建容器接收爬蟲獲取到的數據
設置爬蟲獲取到的信息容器類,必須繼承scrapy.Item類
scrapy.Field()方法,定義變量用scrapy.Field()方法接收爬蟲指定字段的信息
#?-*-?coding:?utf-8?-*- #?Define?here?the?models?for?your?scraped?items # #?See?documentation?in: #?http://doc.scrapy.org/en/latest/topics/items.html import?scrapy #items.py,文件是專門用于,接收爬蟲獲取到的數據信息的,就相當于是容器文件 class?AdcItem(scrapy.Item):????#設置爬蟲獲取到的信息容器類 ????#?define?the?fields?for?your?item?here?like: ????#?name?=?scrapy.Field() ????title?=?scrapy.Field()??????#接收爬蟲獲取到的title信息 ????link?=?scrapy.Field()???????#接收爬蟲獲取到的連接信息 ????comment?=?scrapy.Field()????#接收爬蟲獲取到的商品評論數
第二步、編寫pach.py爬蟲文件
定義爬蟲類,必須繼承scrapy.Spider
name設置爬蟲名稱
allowed_domains設置爬取域名
start_urls設置爬取網址
parse(response)爬蟲回調函數,接收response,response里是獲取到的html數據對象
xpath()過濾器,參數是xpath表達式
extract()獲取html數據對象里的數據
yield item?接收了數據的容器對象,返回給pipelies.py
#?-*-?coding:?utf-8?-*- import?scrapy from?adc.items?import?AdcItem??#導入items.py里的AdcItem類,容器類 class?PachSpider(scrapy.Spider):?????????????????#定義爬蟲類,必須繼承scrapy.Spider ????name?=?"pach"????????????????????????????????#設置爬蟲名稱 ????allowed_domains?=?["search.dangdang.com"]????#爬取域名 ????start_urls?=?["http://category.dangdang.com/pg1-cid4008149.html"]?????#爬取網址 ????def?parse(self,?response):???????????????????#parse回調函數 ????????item?=?AdcItem()?????????????????????????#實例化容器對象 ????????item["title"]?=?response.xpath("http://p[@class="name"]/a/text()").extract()??#表達式過濾獲取到數據賦值給,容器類里的title變量 ????????#?print(rqi["title"]) ????????item["link"]?=?response.xpath("http://p[@class="name"]/a/@href").extract()????#表達式過濾獲取到數據賦值給,容器類里的link變量 ????????#?print(rqi["link"]) ????????item["comment"]?=?response.xpath("http://p[@class="star"]//a/text()").extract()?#表達式過濾獲取到數據賦值給,容器類里的comment變量 ????????#?print(rqi["comment"]) ????????yield?item???#接收了數據的容器對象,返回給pipelies.py
robots協(xié)議
注意:如果獲取的網站在robots.txt文件里設置了,禁止爬蟲爬取協(xié)議,那么將無法爬取,因為scrapy默認是遵守這個robots這個國際協(xié)議的,如果想不遵守這個協(xié)議,需要在settings.py設置
到settings.py文件里找到ROBOTSTXT_OBEY變量,這個變量等于False不遵守robots協(xié)議,等于True遵守robots協(xié)議
#?Obey?robots.txt?rules ROBOTSTXT_OBEY?=?False???#不遵循robots協(xié)議
第三步、編寫pipelines.py數據處理文件
如果需要pipelines.py里的數據處理類能工作,需在settings.py設置文件里的ITEM_PIPELINES變量里注冊數據處理類
#?Configure?item?pipelines #?See?http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES?=?{ ???"adc.pipelines.AdcPipeline":?300,??#注冊adc.pipelines.AdcPipeline類,后面一個數字參數表示執(zhí)行等級,數值越大越先執(zhí)行 }
注冊后pipelines.py里的數據處理類就能工作
定義數據處理類,必須繼承object
process_item(item)為數據處理函數,接收一個item,item里就是爬蟲最后yield item 來的數據對象
#?-*-?coding:?utf-8?-*- #?Define?your?item?pipelines?here # #?Don"t?forget?to?add?your?pipeline?to?the?ITEM_PIPELINES?setting #?See:?http://doc.scrapy.org/en/latest/topics/item-pipeline.html class?AdcPipeline(object):??????????????????????#定義數據處理類,必須繼承object ????def?process_item(self,?item,?spider):???????#process_item(item)為數據處理函數,接收一個item,item里就是爬蟲最后yield?item?來的數據對象 ????????for?i?in?range(0,len(item["title"])):???#可以通過item["容器名稱"]來獲取對應的數據列表 ????????????title?=?item["title"][i] ????????????print(title) ????????????link?=?item["link"][i] ????????????print(link) ????????????comment?=?item["comment"][i] ????????????print(comment) ????????return?item
最后執(zhí)行
執(zhí)行爬蟲文件,scrapy crawl pach --nolog
可以看到我們需要的數據已經拿到了
【轉載自:http://www.lqkweb.com】
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45049.html
摘要:負責處理被提取出來的。典型的處理有清理驗證及持久化例如存取到數據庫知識庫項目的設置文件實現自定義爬蟲的目錄中間件是在引擎及之間的特定鉤子,處理的輸入和輸出及。 【百度云搜索:http://www.bdyss.com】 【搜網盤:http://www.swpan.cn】 Scrapy框架安裝 1、首先,終端執(zhí)行命令升級pip: python -m pip install --upgrad...
摘要:百度云搜索,搜各種資料搜網盤,搜各種資料模擬瀏覽器登錄方法,可以返回一個請求給爬蟲的起始網站,這個返回的請求相當于,返回的請求會替代里的請求請求,可以設置,回調函數表單提交,第一個必須參數,上一次響應的對象,其他參數,表單內容等可以將一個新 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網盤,搜各種資料:http://www.swpan.cn】 模擬瀏覽器登錄...
摘要:百度云搜索,搜各種資料搜網盤,搜各種資料爬取百度新聞,爬取動態(tài)生成的信息,抓取百度新聞首頁的新聞地址有多網站,當你瀏覽器訪問時看到的信息,在源文件里卻找不到,由得信息還是滾動條滾動到對應的位置后才顯示信息,那么這種一般都是的動態(tài)請求生成的信 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網盤,搜各種資料:http://www.swpan.cn】 crapy爬取...
摘要:分布式爬蟲框架詳解隨著互聯網技術的發(fā)展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。下載器中間件位于引擎和下載器之間的框架,主要是處理引擎與下載器之間的請求及響應。 scrapy-redis分布式爬蟲框架詳解 隨著互聯網技術的發(fā)展與應用的普及,網絡作為信息的載體,已經成為社會大眾參與社會生活的一種重要信息渠道。由于互聯網是開放的,每個人都可以在網絡上...
閱讀 962·2021-11-24 09:39
閱讀 2696·2021-09-26 09:55
閱讀 14341·2021-08-23 09:47
閱讀 3583·2019-08-30 15:52
閱讀 855·2019-08-29 13:49
閱讀 1005·2019-08-23 18:00
閱讀 852·2019-08-23 16:42
閱讀 1646·2019-08-23 14:28