互聯網金融爬蟲怎麼寫-第一課 p2p網貸爬蟲(XPath入門)

相關教程:javascript

手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏html

手把手教你寫電商爬蟲-第二課 實戰尚妝網分頁商品採集爬蟲java

手把手教你寫電商爬蟲-第三課 實戰尚妝網AJAX請求處理和內容提取正則表達式

手把手教你寫電商爬蟲-第四課 淘寶網商品爬蟲自動JS渲染chrome

手把手教你寫電商爬蟲-第五課 京東商品評論爬蟲 一塊兒來對付反爬蟲瀏覽器

 

工具要求:教程中主要使用到了 一、神箭手雲爬蟲 框架  這個是爬蟲的基礎,二、Chrome瀏覽器和Chrome的插件XpathHelper 這個用來測試Xpath寫的是否正確框架

基礎知識:本教程中主要用到了一些基礎的js和xpath語法,若是對這兩種語言不熟悉,能夠提早先學習下,都很簡單dom

以前寫了一個電商爬蟲系列的文章,簡單的給你們展現了一下爬蟲從入門到進階的路徑,可是做爲一個永遠走在時代前沿的科技工做者,咱們歷來都不能中止 在已有的成果上,因此帶上你的chrome,拿起你的xpathhelper,打開你的神箭手,讓咱們再次踏上征戰金融數據之旅吧。(上個系列相對難一 些,建議若是是初學者,先看這個系列的教程)函數

金融數據實在是價值大,維度多,來源廣。咱們到底從哪裏入手呢?想來想去,就從前一段時間風雲變幻的p2p網貸開始吧。工具

一樣,咱們教程的一致風格就是先找個軟柿子,上來不能用力過猛,逐漸培養本身的信心,等真正敵人來的時候,纔不至於怯場懼怕。

咱們先去搜索一下p2p網站,隨便找幾個對比一下,選中了這個滬商財富

 

看着這樣的收益率,心動了有木有,錢包坐不住了有木有,對餘額寶投出鄙夷的目光了有木有

好了,閒話不說,這個系列課程吸收上個系列課程裏進度太快的教訓,給你們多講一些基礎的知識,這一課就結合這個實例,重點講講xpath的編寫和用 法。首先,大致來說,XPath是一個相對簡單的語言,甚至都不必定能稱得上是一個語言,主要用處是用來標記XML的元素路徑。因爲html也是一種 xml,所以一般來講,在html中抽取某個元素是經過XPath來作的。XPath自己和Css有着很大的類似性,通常來講若是以前對Css有必定的了 解的話,XPath上手仍是很簡單的。具體的狀況我在下面的課程中一邊寫,一邊解釋。

首先先肯定列表頁:

http://www.hushangcaifu.com/invest/main.html

http://www.hushangcaifu.com/invest/index2.html

http://www.hushangcaifu.com/invest/index3.html

基本上能夠看到列表頁除了第一頁之外都有規律可尋,不過看到這個效果,一般咱們最好精益求精一下,看下第一頁是否也能夠符合規律呢?

打開http://www.hushangcaifu.com/invest/index1.html 果真也是第一頁,好了,很完美,總結成正則表達式:

http://www\\.hushangcaifu\\.com/invest/index\\d+\\.html

再看下詳情頁:

http://www.hushangcaifu.com/invest/a3939.html

http://www.hushangcaifu.com/invest/a3936.html

哈哈,小菜一碟,直接化解成正則:

http://www\\.hushangcaifu\\.com/invest/a\\d{4}\\.html

 

好了,最後最重要的就是提取頁面元素了。咱們打開詳情頁:

http://www.hushangcaifu.com/invest/a3870.html

通常來講,咱們在咱們想要提取的元素上右擊,點擊審查元素,獲得以下結果:

首先看到yanh1147這個元素有沒有整個網頁惟一的class,id或者其餘屬性,能夠看到,在這個頁面中沒有,那麼咱們就往上找,上一級的p 標籤也沒有,我們再往上找,在上一級是一個<div class="product-content-top-left-top">,終於有class了,讓咱們祈禱這個class是惟一的 吧,ctrl+f打開搜索框,輸入product-content-top-left-top,能夠看到,找到了1 of 1,這個表明一共一個,這個是第一個,這就是咱們但願的結果,好了,只用找到這一級既可,咱們來構造整個的xpath,通常來講xpath咱們並不會從最 頂層的html開始寫,由於沒有必要,所以咱們要使用//,這個表示不知中間有多少的層級。接着咱們直接把剛剛找到的這個div寫上去,獲得這個表達式:

//div[contains(@class,"product-content-top-left-top")]

對於class屬性,咱們一般會使用contains這樣一個函數,防止一個元素有多個class的狀況,另外由於class是一個屬性,所以class前面須要加上@表明選擇到該元素的一個屬性。

如今咱們已經選擇到了咱們要選擇的元素的父元素的父元素,只要咱們繼續往下走兩層既可。

//div[contains(@class,"product-content-top-left-top")]/p/span


因爲咱們要選擇元素裏的文字信息,而不是整個元素,咱們須要指定是這個元素的文字:

//div[contains(@class,"product-content-top-left-top")]/p/span/text()

 

好了,這樣咱們就肯定了咱們爬取的借款用戶的名稱,咱們打開xpathhelper驗證一下有沒有寫錯:


完美的結果。不過你們有的時候也須要注意,由於有的網頁不表明你在一個內容頁測試成功,在其餘內容頁也能成功,最好多測幾個頁面纔是保險的。好了,其餘的抽取項就不一一演示了,直接上最後的代碼

var configs = {
    domains: ["www.hushangcaifu.com"],
    scanUrls: ["http://www.hushangcaifu.com/invest/index1.html"],
    contentUrlRegexes: ["http://www\\.hushangcaifu\\.com/invest/a\\d{4}\\.html"],
    helperUrlRegexes: ["http://www\\.hushangcaifu\\.com/invest/index\\d+\\.html"],
    fields: [
        {
            name: "title",
            selector: "//div[contains(@class,'product-content-top-left-top')]/h3/text()",
            required: true 
        },
        {
            name: "user_name",
            selector: "//div[contains(@class,'product-content-top-left-top')]/p/span/text()"
        },
        {
            name: "total_money",
            selector: "//div[contains(@class,'product-content-top-left-middle')]/div[1]/h4/text()"
        },
        {
            name: "project_time",
            selector: "//div[contains(@class,'product-content-top-left-middle')]/div[2]/h4/text()"
        },
        {
            name: "annual_return",
            selector: "//div[contains(@class,'product-content-top-left-middle')]/div[3]/h4/text()"
        },
        {
            name: "return_method",
            selector: "//div[contains(@class,'product-content-top-left-middle')]/div[4]/h4/text()"
        }
        
    ]
};

var crawler = new Crawler(configs);
crawler.start();


將代碼粘貼到神箭手平臺上既可運行。好了,看下運行結果:

 

對爬蟲感興趣的童鞋能夠加qq羣討論:342953471。

相關文章
相關標籤/搜索