第三百三十四節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy爬取百度新聞,爬取Ajax動態產生的資訊

來源:互聯網
上載者:User

標籤:響應   中間   爬蟲   類型   產生   載入完成   一個   log   字元   

第三百三十四節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy爬取百度新聞,爬取Ajax動態產生的資訊

 

crapy爬取百度新聞,爬取Ajax動態產生的資訊,抓取百度新聞首頁的新聞標題和rul地址

有多網站,當你瀏覽器訪問時看到的資訊,在html源檔案裡卻找不到,由得資訊還是捲軸滾動到對應的位置後才顯示資訊,那麼這種一般都是 js 的 Ajax 動態請求產生的資訊

我們以百度新聞為列:

 

1、分析網站

首先我們瀏覽器開啟百度新聞,在網頁中間部分找一條新聞資訊

 

然後查看源碼,看看在源碼裡是否有這條新聞,可以看到源檔案裡沒有這條資訊,這種情況爬蟲是無法爬取到資訊的

 

那麼我們就需要抓包分析了,啟動抓包軟體和抓包瀏覽器,前後有說過軟體了,就不在說了,此時我們經過抓包看到這條資訊是通過Ajax動態產生的JSON資料,也就是說,當html頁面載入完成後才產生的,所有我們在源檔案裡無法找到,當然爬蟲也找不到

 

我們首先將這個JSON資料網址拿出來,到瀏覽器看看,我們需要的資料是不是全部在裡面,此時我們看到這次請求裡只有 17條資訊,顯然我們需要的資訊不是完全在裡面,還得繼續看看其他js包

 

我們將抓包瀏覽器捲軸拉到底,以便觸發所有js請求,然後在繼續找js包,我們將所有js包都找完了再沒看到新聞資訊的包了

 

那資訊就不在js包裡了,我們回頭在看看其他類型的請求,此時我們看到很多get請求響應的是我們需要的新聞資訊,說明只有第一次那個Ajax請求返回的JSON資料,後面的Ajax請求返回的都是html類型的字串資料,

 

我們將Ajax請求返回的JSON資料的網址和Ajax請求返回html類型的字串資料網址,拿來做一下比較看看是否能找到一定規律,

此時我們可以看到,JSON資料的網址和html類型的字串資料網址是一個請求地址,

只是請求時傳遞的參數不一樣而已,那麼說明無論返回的什麼類型的資料,都是在一個請求地址處理的,只是根據不同的傳參返回不同類型的資料而已

http://news.baidu.com/widget?id=LocalNews&ajax=json&t=1501348444467   JSON資料的網址http://news.baidu.com/widget?id=civilnews&t=1501348728134        html類型的字串資料網址http://news.baidu.com/widget?id=InternationalNews&t=1501348728196    html類型的字串資料網址

 

我們可以將html類型的字串資料網址加上JSON資料的網址參數,那是否會返回JSON資料類型?試一試,果然成功了

http://news.baidu.com/widget?id=civilnews&ajax=json        將html類型的字串資料網址加上JSON資料的網址參數http://news.baidu.com/widget?id=InternationalNews&ajax=json    將html類型的字串資料網址加上JSON資料的網址參數

 

這下就好辦了,找到所有的html類型的字串資料網址,按照上面的方法將其轉換成JSON資料的網址,然後迴圈的去訪問轉換後的JSON資料的網址,就可以拿到所有新聞的標題和url地址了

 

第三百三十四節,web爬蟲講解2—Scrapy架構爬蟲—Scrapy爬取百度新聞,爬取Ajax動態產生的資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.