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