国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

編寫Python腳本來獲取Google搜索結果的示例

2020-02-23 01:05:03
字體:
來源:轉載
供稿:網友

前一段時間一直在研究如何用python抓取搜索引擎結果,在實現的過程中遇到了很多的問題,我把我遇到的問題都記錄下來,希望以后遇到同樣問題的童鞋不要再走彎路。

1. 搜索引擎的選取

  選擇一個好的搜索引擎意味著你能夠得到更準確的搜索結果。我用過的搜索引擎有四種:Google、Bing、Baidu、Yahoo!。 作為程序員,我首選Google。但當我看見我最愛的Google返回給我的全是一堆的js代碼,根本沒我想要的搜索結果。于是我轉而投向了Bing的陣營,在用過一段時間后我發現Bing返回的搜索結果對于我的問題來說不太理想。正當我要絕望時,Google拯救了我。原來Google為了照顧那些禁止瀏覽器使用js的用戶,還有另外一種搜索方式,請看下面的搜索URL:

https://www.google.com.hk/search?hl=en&q=hello

  hl指定要搜索的語言,q就是你要搜索的關鍵字。 好了,感謝Google,搜索結果頁面包含我要抓取的內容。

  PS: 網上很多利用python抓取Google搜索結果還是利用 https://ajax.googleapis.com/ajax/services/search/web... 的方法。需要注意的是這個方法Google已經不再推薦使用了,見 https://developers.google.com/web-search/docs/ 。Google現在提供了Custom Search API, 不過API限制每天100次請求,如果需要更多則只能花錢買。

2. Python抓取并分析網頁

  利用Python抓取網頁很方便,不多說,見代碼:

def search(self, queryStr):   queryStr = urllib2.quote(queryStr)   url = 'https://www.google.com.hk/search?hl=en&q=%s' % queryStr   request = urllib2.Request(url)   response = urllib2.urlopen(request)   html = response.read()   results = self.extractSearchResults(html)


  第6行的 html 就是我們抓取的搜索結果頁面源碼。使用過Python的同學會發現,Python同時提供了urllib 和 urllib2兩個模塊,都是和URL請求相關的模塊,不過提供了不同的功能,urllib只可以接收URL,而urllib2可以接受一個Request類的實例來設置URL請求的headers,這意味著你可以偽裝你的user agent 等(下面會用到)。

  現在我們已經可以用Python抓取網頁并保存下來,接下來我們就可以從源碼頁面中抽取我們想要的搜索結果。Python提供了htmlparser模塊,不過用起來相對比較麻煩,這里推薦一個很好用的網頁分析包BeautifulSoup,關于BeautifulSoup的用法官網有詳細的介紹,這里我不再多說。

  利用上面的代碼,對于少量的查詢還比較OK,但如果要進行上千上萬次的查詢,上面的方法就不再有效了, Google會檢測你請求的來源,如果我們利用機器頻繁爬取Google的搜索結果,不多久就Google會block你的IP,并給你返回503 Error頁面。這不是我們想要的結果,于是我們還要繼續探索

  前面提到利用urllib2我們可以設置URL請求的headers,  偽裝我們的user agent。簡單的說,user agent就是客戶端瀏覽器等應用程序使用的一種特殊的網絡協議, 在每次瀏覽器(郵件客戶端/搜索引擎蜘蛛)進行 HTTP 請求時發送到服務器,服務器就知道了用戶是使用什么瀏覽器(郵件客戶端/搜索引擎蜘蛛)來訪問的。 有時候為了達到一些目的,我們不得不去善意的欺騙服務器告訴它我不是在用機器訪問你。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉寿县| 广德县| 通州区| 晴隆县| 都昌县| 桐梓县| 漳州市| 开鲁县| 汕尾市| 长治县| 赣州市| 锡林浩特市| 陇西县| 大石桥市| 婺源县| 蓝山县| 哈尔滨市| 合作市| 淳安县| 通海县| 舞钢市| 延边| 克山县| 梅河口市| 青州市| 鱼台县| 贵南县| 墨竹工卡县| 新营市| 靖安县| 吴桥县| 博野县| 渭源县| 凤台县| 呼和浩特市| 左权县| 灌云县| 晴隆县| 宜良县| 赤城县| 同仁县|