摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料用命令創(chuàng)建自動爬蟲文件創(chuàng)建爬蟲文件是根據(jù)的母版來創(chuàng)建爬蟲文件的查看創(chuàng)建爬蟲文件可用的母版母版說明創(chuàng)建基礎(chǔ)爬蟲文件創(chuàng)建自動爬蟲文件創(chuàng)建爬取數(shù)據(jù)爬蟲文件創(chuàng)建爬取數(shù)據(jù)爬蟲文件創(chuàng)建一個基礎(chǔ)母版爬蟲,其他同理
【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】
用命令創(chuàng)建自動爬蟲文件
創(chuàng)建爬蟲文件是根據(jù)scrapy的母版來創(chuàng)建爬蟲文件的
scrapy genspider -l??查看scrapy創(chuàng)建爬蟲文件可用的母版
Available templates:母版說明
basic ? ? 創(chuàng)建基礎(chǔ)爬蟲文件
crawl ? ?創(chuàng)建自動爬蟲文件
csvfeed ? ? ?創(chuàng)建爬取csv數(shù)據(jù)爬蟲文件
xmlfeed ?創(chuàng)建爬取xml數(shù)據(jù)爬蟲文件
創(chuàng)建一個基礎(chǔ)母版爬蟲,其他同理
scrapy genspider ?-t ?母版名稱 ?爬蟲文件名稱 ?要爬取的域名?創(chuàng)建一個基礎(chǔ)母版爬蟲,其他同理
如:scrapy genspider -t?crawl?lagou www.lagou.com
第一步,配置items.py接收數(shù)據(jù)字段
default_output_processor = TakeFirst()默認利用ItemLoader類,加載items容器類填充數(shù)據(jù),是列表類型,可以通過TakeFirst()方法,獲取到列表里的內(nèi)容
input_processor = MapCompose(預處理函數(shù))設(shè)置數(shù)據(jù)字段的預處理函數(shù),可以是多個函數(shù)
#?-*-?coding:?utf-8?-*- #?Define?here?the?models?for?your?scraped?items # #?See?documentation?in: #?http://doc.scrapy.org/en/latest/topics/items.html #items.py,文件是專門用于,接收爬蟲獲取到的數(shù)據(jù)信息的,就相當于是容器文件 import?scrapy from?scrapy.loader.processors?import?MapCompose,TakeFirst from?scrapy.loader?import?ItemLoader????????????????#導入ItemLoader類也就加載items容器類填充數(shù)據(jù) class?LagouItemLoader(ItemLoader):??????????????????#自定義Loader繼承ItemLoader類,在爬蟲頁面調(diào)用這個類填充數(shù)據(jù)到Item類 ????default_output_processor?=?TakeFirst()??????????#默認利用ItemLoader類,加載items容器類填充數(shù)據(jù),是列表類型,可以通過TakeFirst()方法,獲取到列表里的內(nèi)容 def?tianjia(value):?????????????????????????????????#自定義數(shù)據(jù)預處理函數(shù) ????return?"叫賣錄音網(wǎng)"+value????????????????????????#將處理后的數(shù)據(jù)返給Item class?LagouItem(scrapy.Item):???????????????????????#設(shè)置爬蟲獲取到的信息容器類 ????title?=?scrapy.Field(???????????????????????????#接收爬蟲獲取到的title信息 ????????input_processor?=?MapCompose(tianjia),??????#將數(shù)據(jù)預處理函數(shù)名稱傳入MapCompose方法里處理,數(shù)據(jù)預處理函數(shù)的形式參數(shù)value會自動接收字段title ????)
第二步,編寫自動爬蟲與利用ItemLoader類加載items容器類填充數(shù)據(jù)
自動爬蟲
Rule()設(shè)置爬蟲規(guī)則
參數(shù):
LinkExtractor()設(shè)置url規(guī)則
callback="回調(diào)函數(shù)名稱"
follow=True 表示在抓取頁面繼續(xù)深入
LinkExtractor()對爬蟲獲取到的url做規(guī)則判斷處理
參數(shù):
allow= r"jobs/" 是一個正則表達式,表示符合這個url格式的,才提取
deny= r"jobs/" 是一個正則表達式,表示符合這個url格式的,不提取拋棄掉,與allow相反
allow_domains= www.lagou.com/ 表示這個域名下的連接才提取
deny_domains= www.lagou.com/ 表示這個域名下的連接不提取拋棄
restrict_xpaths= xpath表達式 表示可以用xpath表達式限定爬蟲只提取一個頁面指定區(qū)域的URL
restrict_css= css選擇器,表示可以用css選擇器限定爬蟲只提取一個頁面指定區(qū)域的URL
tags= "a" 表示爬蟲通過a標簽去尋找url,默認已經(jīng)設(shè)置,默認即可
attrs= "href" 表示獲取到a標簽的href屬性,默認已經(jīng)設(shè)置,默認即可
*
?利用自定義Loader類繼承ItemLoader類,加載items容器類填充數(shù)據(jù)
*ItemLoader()實例化一個ItemLoader對象來加載items容器類,填充數(shù)據(jù),如果是自定義Loader繼承的ItemLoader同樣的用法
參數(shù):
第一個參數(shù):要填充數(shù)據(jù)的items容器類注意加上括號,
第二個參數(shù):response*
ItemLoader對象下的方法:
add_xpath("字段名稱","xpath表達式")方法,用xpath表達式獲取數(shù)據(jù)填充到指定字段
add_css("字段名稱","css選擇器")方法,用css選擇器獲取數(shù)據(jù)填充到指定字段
add_value("字段名稱",字符串內(nèi)容)方法,將指定字符串數(shù)據(jù)填充到指定字段
load_item()方法無參,將所有數(shù)據(jù)生成,load_item()方法被yield后數(shù)據(jù)被填充items容器指定類的各個字段
?爬蟲文件
#?-*-?coding:?utf-8?-*- import?scrapy from?scrapy.linkextractors?import?LinkExtractor from?scrapy.spiders?import?CrawlSpider,?Rule from?adc.items?import?LagouItem,LagouItemLoader??#導入items容器類,和ItemLoader類 class?LagouSpider(CrawlSpider):?????????????????????#創(chuàng)建爬蟲類 ????name?=?"lagou"??????????????????????????????????#爬蟲名稱 ????allowed_domains?=?["www.luyin.org"]?????????????#起始域名 ????start_urls?=?["http://www.luyin.org/"]??????????#起始url ????rules?=?( ????????#配置抓取列表頁規(guī)則 ????????Rule(LinkExtractor(allow=("ggwa/.*")),?follow=True), ????????#配置抓取內(nèi)容頁規(guī)則 ????????Rule(LinkExtractor(allow=("post/d+.html.*")),?callback="parse_job",?follow=True), ????) ????def?parse_job(self,?response):??????????????????#回調(diào)函數(shù),注意:因為CrawlS模板的源碼創(chuàng)建了parse回調(diào)函數(shù),所以切記我們不能創(chuàng)建parse名稱的函數(shù) ????????#利用ItemLoader類,加載items容器類填充數(shù)據(jù) ????????item_loader?=?LagouItemLoader(LagouItem(),?response=response) ????????item_loader.add_xpath("title","/html/head/title/text()") ????????article_item?=?item_loader.load_item() ????????yield?article_item
items.py文件與爬蟲文件的原理圖
【轉(zhuǎn)載自:http://www.lqkweb.com】
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45139.html
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料注意數(shù)據(jù)保存的操作都是在文件里操作的將數(shù)據(jù)保存為文件是一個信號檢測導入圖片下載器模塊定義數(shù)據(jù)處理類,必須繼承初始化時打開文件為數(shù)據(jù)處理函數(shù),接收一個,里就是爬蟲最后來的數(shù)據(jù)對象文章標題是 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 注意:數(shù)據(jù)保存的操作都是在p...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料編寫爬蟲文件循環(huán)抓取內(nèi)容方法,將指定的地址添加到下載器下載頁面,兩個必須參數(shù),參數(shù)頁面處理函數(shù)使用時需要方法,是庫下的方法,是自動拼接,如果第二個參數(shù)的地址是相對路徑會自動與第一個參數(shù)拼接導 【百度云搜索,搜各種資料:http://bdy.lqkweb.com】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 編寫spiders爬...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料我們自定義一個來作為啟動文件導入執(zhí)行命令方法給解釋器,添加模塊新路徑將文件所在目錄添加到解釋器執(zhí)行命令爬蟲文件表達式基本使用設(shè)置爬蟲起始域名設(shè)置爬蟲起始地址默認爬蟲回調(diào)函數(shù),返 【百度云搜索,搜各種資料:http://www.bdyss.cn】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 我們自定義一個main.py來作為啟動...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料基本概念反爬蟲的目的爬蟲和反爬的對抗過程以及策略架構(gòu)源碼分析圖 【百度云搜索,搜各種資料:http://www.lqkweb.com】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 1、基本概念 showImg(https://segmentfault.com/img/remote/1460000019749170); 2、反爬...
摘要:百度云搜索,搜各種資料搜網(wǎng)盤,搜各種資料請求請求就是我們在爬蟲文件寫的方法,也就是提交一個請求地址,請求是我們自定義的方法提交一個請求參數(shù)字符串類型地址回調(diào)函數(shù)名稱字符串類型請求方式,如果字典類型的,瀏覽器用戶代理設(shè)置字典類型鍵值對,向回調(diào) 【百度云搜索,搜各種資料:http://www.lqkweb.com】 【搜網(wǎng)盤,搜各種資料:http://www.swpan.cn】 Reque...
閱讀 3066·2021-09-22 14:59
閱讀 1896·2021-09-22 10:02
閱讀 2132·2021-09-04 16:48
閱讀 2271·2019-08-30 15:53
閱讀 2976·2019-08-30 11:27
閱讀 3416·2019-08-29 18:35
閱讀 973·2019-08-29 17:07
閱讀 2681·2019-08-29 13:27