爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲

爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲

ID:12738747

大?。?15.21 KB

頁數(shù):7頁

時(shí)間:2018-07-18

爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲_第1頁
爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲_第2頁
爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲_第3頁
爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲_第4頁
爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲_第5頁
資源描述:

《爬蟲學(xué)習(xí)之基于scrapy的網(wǎng)絡(luò)爬蟲》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、爬蟲學(xué)習(xí)之基于Scrapy的網(wǎng)絡(luò)爬蟲  建立目標(biāo)  同樣在做任何事情之前都需要明確目標(biāo),那這次我們的目標(biāo)是爬取一些技術(shù)性的文章并存儲(chǔ)到數(shù)據(jù)庫中。這就需要有目標(biāo)網(wǎng)址和數(shù)據(jù)庫結(jié)構(gòu),數(shù)據(jù)庫我們選擇使用MySql,目標(biāo)網(wǎng)站我們找了一個(gè)叫腳本之家的內(nèi)容站。我們這里首先準(zhǔn)備好一張用于存儲(chǔ)文章的表結(jié)構(gòu):  CREATETABLE`articles`(  `id`mediumint(8)AUTO_INCREMENTNOTNULL,  `title`varchar(255)DEFAULTNULL,  `content`longtext,  `add_date`int(11)DEFAULT

2、0,  `hits`int(11)DEFAULT'0',  `origin`varchar(500)DEFAULT'',  `tags`varchar(45)DEFAULT'',  PRIMARYKEY(`id`),  KEY`add_date`(`add_date`)  )ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;  分析目標(biāo)結(jié)構(gòu)  這里我們首先需要爬取得入口是“網(wǎng)絡(luò)編程”這個(gè)節(jié)點(diǎn),主入口網(wǎng)址為(http://www.jb51.net/list/index_1.htm)打開這個(gè)網(wǎng)站我們通過Chrom

3、e或者其他瀏覽器的查看元素來分析當(dāng)前頁面的HTML語義結(jié)構(gòu),如下圖所示:  從圖中紅色框線的部分可以看出,這里是我們需要在“網(wǎng)絡(luò)編程”這個(gè)節(jié)點(diǎn)下需要提取的所有文章的主分類入口,通過這些入口可以進(jìn)去到不同文章分類的列表中。所以根據(jù)初步結(jié)構(gòu)分析,我們得出本次爬蟲的爬取路線為:  從主入口進(jìn)去->提取當(dāng)前入口中的所有分類->通過分類入口進(jìn)入到分類列表->通過列表進(jìn)入到文章頁  分類入口確定了接下來看看我們的分類列表,隨意點(diǎn)開一個(gè)分類入口,打開列表如下圖所示:  這里我框出了兩個(gè)主要部分,第一個(gè)是文章的標(biāo)題,第二個(gè)是分頁,文章對(duì)應(yīng)的URL就是我們接下來需要爬取文章內(nèi)容的入口,這

4、里需要注意的是分頁的處理,通過分頁的最后一頁我們可以知道當(dāng)前這類列表共有多少頁文章。結(jié)合以上分析我們基本確定了本次爬蟲的各個(gè)路線入口,接下來我們就開始通過程序來實(shí)現(xiàn)本次的目標(biāo)?! ?shí)現(xiàn)爬蟲  在實(shí)現(xiàn)爬蟲之前我們通過一張圖來對(duì)Scrapy有個(gè)基本的認(rèn)識(shí),為了保持本章內(nèi)容的簡(jiǎn)潔性,我們這里暫時(shí)不會(huì)討論ItemPipeline部分,Scrapy架構(gòu)圖如下所示(圖片來自網(wǎng)絡(luò)):  從圖中可以很清晰的看到Scrapy所包含的幾大塊,下面我們通過代碼來演示我們所用到的基礎(chǔ)功能部分。  主要依賴第三方庫:  web.pyweb框架,這里只用到了database部分,將來會(huì)用來進(jìn)行內(nèi)容

5、展示  scrapy爬蟲框架,這里只用到了最基本的內(nèi)容提取  這里還會(huì)用到一些xpath相關(guān)知識(shí),請(qǐng)自行Google了解xpath語法  #-*-coding:utf-8-*-  '''bysudorm-rfhttp://imchenkun.com'''  importscrapy  fromscrapy.httpimportRequest  importweb  importtime  db=web.database(dbn='mysql',host='127.0.0.1',db='imchenkun',user='root',pw='root')  #允許的站點(diǎn)域 

6、 allow_domain="jb51.net"  base_url="http://www.jb51.net"  #列表頁  list_url="http://www.jb51.net/list/list_%d_%d.htm"  #列表分頁  list_page=1  #文章頁  crawl_url="http://www.jb51.net/article/%d.htm"  classJB51Spider(scrapy.Spider):  name="jb51"  start_urls=[  "http://www.jb51.net/list/index_1.htm"

7、  ]  cate_list=[]  defparse(self,response):  cate_id=response.selector.xpath('//div[@class="index_borclearfix"]/div[@class="index_con"]/span/a/@href').re('(\\d+)')[::2]  foridincate_id:  cate_url=list_url%(int(id),1)  yieldRequest(cate_url,callback=self.parse_page)  def

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。