日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ajax爬取微博,自动滚屏抓取新浪微博

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax爬取微博,自动滚屏抓取新浪微博 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微博是一種新媒體和通信工具,上面有大量,首先需要將微博的內容抓取下來。單從微博的網頁結構來說,上面的數據具有很規整的語義結構和元數據,所以,對于這

種旨在結構化網頁數據的抓取工具來說,抓取微博的內容很容易。但是,從微博網站采用的編程技術來說,抓取微博又有很多障礙,最大的障礙是基于

Javascript/JS的AJAX程序框架,導致網絡爬蟲很難在微博網站上爬行和抓取數據。但是,MetaSeeker具有很強的AJAX內容抓取能

力,我們在《抓取AJAX網站》一文已經有所體驗。本文將以抓取新浪微博為例,講解MetaSeeker的一些重要特性。本文講解的方法同樣適用于抓取騰訊微博。

假設有下面的抓取目標:

目的:抓取新浪微博,重復抓取,持續監控,進行Web數據挖掘,用于建設。

主題名:demo_sina_weibo

抓取目標

從微博列表中抓取下面的內容

內容

發布時間

轉發數

點評數

翻頁抓取:如果定時重復監測第一頁是否出現新內容,翻頁抓取是沒有意義的,但是,我們在本文還是定義了翻頁抓取規則,僅為演示。

注釋1:登錄前和登錄后看到的內容數量有差別,定義上述網站抓取信息結構(用于自動生成抓取規則)時,事先登錄了新浪微博,所以讀者如果要用MetaStudio加載體驗該信息結構,請事先通過火狐瀏覽器完成登錄,否則可能加載失敗,詳細說明參見下節。

注釋2:抓取AJAX網站的信息結構的加載方法有點不同,請參考《分頁抓取卓越網的商品》

注釋3:本文不是入門教程,如果對MetaSeeker的基本操作方法不熟悉,請按順序閱讀《MetaSeeker速成手冊》

1 登錄新浪微博

如果不登錄新浪微博,訪問上述樣本網頁看到的微博信息條數要少很多,所以,在運行之前先用Firefox訪問新浪微博,完成登錄。由于登錄狀態記錄在cookie中,即便火狐瀏覽器退出了,在一定時間內登錄狀態還是有效的,在此期間運行MetaSeeker不用再次登錄。

2 抓取新浪微博的規則

圖1顯示了如下步驟:

在內嵌瀏覽器上選擇樣例,如果打開了反向選擇開關,則MetaStudio能夠在DOM樹視窗中自動定位對應的DOM節點,參見《抓取當當百貨價格》

為各信息屬性作數據映射和FreeFormat映射,以便MetaStudio自動生成抓取規則,參見《抓取當當百貨價格》

為了抓取多條微博消息,即抓取多實例,進行FreeFormat映射,而且選擇@class='MIB_linedot_l'作為

FreeFormat標志。因為在網頁上,多個HTML

DOM節點具有這個class值,所以,可以用來抓取多實例。相反,因為@id一般在一個網頁上是唯一的,所以,不能選擇這個DOM節點的@id作為

FreeFormat標志。詳細描述參見《抓取京東商城商品價格》。如果不用FreeFormat映射,也可以使用樣例復制品方法抓取多實例,參見《抓取當當百貨價格》

3 設置AJAX抓取模式

如圖2所示,我們只選擇了延長模式,而不像《分頁抓取卓越網的商品》那樣同時設置兩個AJAX網頁抓取模式,因為試驗發現,轉發數和點評數是在網頁加載完成后才使用Javascript/JS程序從服務器異步加載的,所以,一定要設置延長模式。

4 定義分頁抓取規則

為了翻頁抓取所有網頁,需要定義線索抓取規則,而且應該設置成線內線索類型,詳細操作步驟參見《批量抓取當當網價格數據》,本文只簡單介紹一下步驟(如圖3):

轉到Clue Editor工作臺

創建記號線索

選擇記號“下一頁”

進行線索映射

進行記號映射

設置成線內線索

圖4顯示了怎樣設置線索定位的首選項,這一步不是必須的,但是這樣做可以提高抓取規則的適應度,也就是說即使目標網頁結構修改了抓取規則受到的影響盡量小。原理說明參見,另一個應用案例參見

點擊菜單“配置”-〉“首選項”

在彈出對話框中選擇線索定位標簽(tab),從“偏好id”改成“偏好class”

觀察MetaStudio自動生成的抓取規則文件,可以看到變化,定位記號“下一頁”時就近采用@class='fanye MIB_txtbl rt'作為FreeFormat標志,這樣可以提高抓取規則的適應性。

至此,信息結構定義完了,可以將它和自動生成的抓取規則一起上載到MetaSeeker服務器上,以便DataScraper隨時隨地使用這個抓取規則。很明顯,信息結構定義過程與《分頁抓取卓越網的商品》沒有什么本質區別,但是,下面的章節我們可以看到需要更多高級技巧才能完整抓取新浪微博的內容。

5 自動滾屏抓取

用Firefox火狐瀏覽器閱讀該樣本網頁上的微博消息時,如果網絡速度不很快,會有一種特殊體驗:微博消息很多,這個網頁很長,需要拖動右側的卷

滾條滾屏才能看全所有消息,當網速比較慢時,滾屏時先看到文字,然后是圖片,然后是轉發數和點評數。后者是異步加載的,沒有滾動到可見范圍就不從服務器上

下載這些內容。如果我們采用通常的抓取方法,勢必只能抓取到前面幾條消息的點評數和轉發數,因此,必須要求DataScraper在抓取的時候自動滾屏。

這種情形不僅發生在微博網站上,有些網站的網頁上有大量圖片,為了提高網頁下載速度,一般也是在滾屏時才下載圖片,例如網站就是這樣。

6 設置滾屏參數

圖5顯示了設置滾屏參數的步驟:

打開全屏顯示,DataScraper重新運行時或者啟動多線程周期性抓取窗口時,DataScraper將占滿整個屏幕,增大瀏覽器的可視范圍,每屏顯示的內容最多,以減少翻屏次數

選擇滾屏參數菜單

在彈出對話框中輸入滾屏參數。More Pages參數一定不能為0,否則就不會自動滾屏,具體滾多少,需要試驗驗證,詳細說明參見《如何自動滾屏抓取AJAX網站數據》

如果采用周期性自動抓取模式,請參考修改crontab.xml文件的相關參數。

注釋:本例將More Pages設置成15,當網絡速度很慢的時候,也許30更合適,這樣預留更多時間等待所有點評數和轉發數加載上。

7 提高新浪微博的抓取速度

新浪微博上的照片尺寸很大,而且數量很多,下載時間很長,做Web數據挖掘系統時,圖片一般不需要,如果能夠阻止下載圖片,將大大加快速度,如果您使用企業版,請參考。

總結

以上是生活随笔為你收集整理的ajax爬取微博,自动滚屏抓取新浪微博的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。