python爬蟲小例子


python爬蟲小例子

python爬蟲小實例

一個帶異常處理的小例子


代碼如下:

import requests
url="http://www.cnblogs.com/hjw1"
try:
    r=requests.get(url)
    r.raise_for_status()    
    print r.encoding
    print r.text
except:
    print "failed"

這里寫圖片描述
r.raise_for_status()的功能是判斷返回的狀態碼,如果狀態碼不是200(如404),則拋出異常

這里輸出了一下網頁編碼,是utf-8可以正常輸出,不用修改。如果編碼不對造成中文亂碼,可以用
r.encoding=r.apparent_encoding修改為解析的編碼

解決網站爬蟲限制

有些網站限制了網絡請求的來源,來阻止爬蟲。一般是通過’user-agent’屬性來區分。
通過
print r.request.headers
來查看user-agent屬性。
requests庫寫的代碼默認user-agent是’python-requests/x.xx.x’(x表示版本號)。如果訪問不成功,可嘗試修改’user-agent’屬性。
方法如下:
1. 先構建一個字典
ua={"user-agent":"Mozilla/5.0"}
其中”Mozilla/5.0”是瀏覽器的普遍標識。
2. 在get方法里面加一個參數
r=requests.get(url,headers=ua)
這時就可以模仿瀏覽器訪問了。
完整代碼:

import requests
url="http://www.cnblogs.com/hjw1"
ua={"user-agent":"Mozilla/5.0"}
r=requests.get(url)
print r.request.headers
r=requests.get(url,headers=ua)
print r.request.headers

結果:
這里寫圖片描述

爬蟲獲取百度搜索結果

方法一

百度搜索的搜索關鍵詞是通過鏈接提交的,比如在百度搜索“環家偉”,答案頁的鏈接為https://www.baidu.com/s?wd=環家偉
這樣就簡單了,我們可以自己拼接url來實現百度搜索關鍵詞提交

# coding: UTF-8
import requests
url="http://www.baidu.com/s?wd="
wd="環家偉"
url=url+wd
r=requests.get(url)
print r.text

第一行里面# coding: UTF-8是聲明編碼的,不寫的話將不能識別中文。
重點是這句,字符串拼接一下

url="http://www.baidu.com/s?wd="
wd="環家偉"
url=url+wd

這樣就可以實現關鍵詞提交
運行結果有點長,而且百度程序員還調皮的在代碼代碼加了很多換行。。。。
這里寫圖片描述
這樣你打開就會很驚奇:百度程序員用兩行代碼寫了一個網頁?!!!
下面是運行結果:(好長)
這里寫圖片描述

方法二

剛剛已經實現了百度關鍵詞提交。現在講另一個方法來提交關鍵詞。

 # coding: UTF-8
import requests
url="http://www.baidu.com/s"
kv={"wd":"環家偉"}
r=requests.get(url,params=kv)
r.encoding="utf-8"
print r.text[:2000]

其中,這個網頁不設置r.encoding是亂碼的,所以設為utf-8
提交搜索詞的方法也是構建一個字典鍵值對
kv={"wd":"環家偉"}
然后通過get方法傳進去
r=requests.get(url,params=kv)
r.text[:2000]是取字符串0-2000的部分
“`tips:可以通過r.request.url來查看生成的鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM