從現(xiàn)在開始,我們將進(jìn)入實(shí)戰(zhàn)階段,本課程主要知識(shí)點(diǎn)包括三個(gè):
一、一個(gè)簡(jiǎn)單的爬取豆瓣讀書內(nèi)容示例 我們現(xiàn)在要爬取豆瓣讀書中的新書速遞中的書籍信息,主要提取它們的書籍標(biāo)題、書籍內(nèi)容鏈接以及發(fā)布時(shí)間。如下圖: (圖一)豆瓣讀書html
1為我們要爬取的豆瓣讀書的URL地址,2為我們要爬取的具體內(nèi)容的HTML元素區(qū)塊。那么對(duì)照我們使用Scrapy應(yīng)該怎么寫呢? 第一步:在scrapy中,我們把要爬取的目標(biāo)網(wǎng)頁(yè)的URL放在start_urls中,start_urls是可以存放多個(gè)url地址的,至于它們是怎么一個(gè)個(gè)加載這些url的,我會(huì)在后面講解源碼的課程中會(huì)詳細(xì)講解。第二步就是獲取ul標(biāo)簽下的所有l(wèi)i標(biāo)簽的內(nèi)容,因?yàn)槲覀冃枰臅畔⒍荚谶@些li里面。 (圖二)豆瓣讀書爬蟲源代碼
從上面的第二個(gè)紅色框,我們發(fā)現(xiàn)它是先通過(guò)找到id為content,然后找出子div,再找出這個(gè)子div下的第二個(gè)子div,再就是ul/li。這個(gè)只是其中一種方法,這種方法主要是直接使用瀏覽器自帶的“Copy XPath”功能來(lái)實(shí)現(xiàn)的(Chrome瀏覽器的實(shí)現(xiàn)方式為選中區(qū)域,右擊,Copy,選擇Copy XPath)。 瀏覽器自帶的“Copy XPath”功能
實(shí)際上我們完全可以使用另一種方法獲取到這個(gè)li,方法很多,下面任舉一例子: (圖三)獲取li的兩種方法
在(圖二)豆瓣讀書爬蟲源代碼中有一個(gè)name ='douban_book',這個(gè)是每個(gè)爬蟲文件的唯一名稱,我們?cè)趫?zhí)行爬蟲時(shí)就會(huì)用到它。 二、使用PyCharm進(jìn)行代碼調(diào)試 對(duì)于程序員來(lái)說(shuō),我們深知代碼調(diào)試的重要性,那么我們?nèi)绾问褂肞yCharm來(lái)調(diào)試爬蟲代碼呢? 我們新建一個(gè)main.py文件,如下圖: (圖四)利用main進(jìn)行代碼調(diào)試
我們只要使用debug方法執(zhí)行這個(gè)main.py,就會(huì)進(jìn)入我們?cè)趯?duì)應(yīng)的douban_book文件的斷點(diǎn)中。 (圖五)Debug執(zhí)行main
到此,一個(gè)簡(jiǎn)單的Scrapy使用的“hello world”已經(jīng)完成。接下來(lái)我會(huì)在這個(gè)“hello world”基礎(chǔ)上去講解XPath選擇器的詳細(xì)用法,items的設(shè)計(jì),以及如何使用pipeline把item中的數(shù)據(jù)保存到Mysql數(shù)據(jù)庫(kù)表中。 |
|