python爬蟲第二天
超時設定
有時候訪問網頁時長時間未響應,系統就會判斷網頁超時,無法開啟網頁。如果需要自己設定超時時間則:
通過urlopen()開啟網頁時使用timeout欄位設定
import urllib.request
for i in range(1,100): #迴圈99次
try:
file = urllib.request.urlopen("",timeout=0.1) #設定超時時間為0.1s
data = file.read()
print(len(data))
except exception as e:
print("出現異常:"+str(e))
#**伺服器效能不好的時候可能出現異常
一般我們不想出現超時異常就可以把時間設定長一點如:30。
http協議請求實戰:
在客戶端和伺服器端之間訊息傳遞可以使用http協議請求進行
http六種型別:
post請求:可以向伺服器提交資料,比較主流比較安全。
put請求:請求伺服器儲存乙個資源,通常要指定儲存的位置。
head請求:請求獲取報頭資訊。
delete請求:請求伺服器刪除乙個資源。
options請求:獲取當前url所支援的請求型別。
一般使用get和post較多隻介紹這兩種:
get請求:
這時我們把
接著我們實現
import urllib.request
keywd = "xpath"
url = "" + keywd
req = urllib.request.request(url)
data = urllib.request.urlopen(req).read()
fhandle = open("d:/crawler/6.html", "wb")
fhandle.write(data)
fhandle.close()
import urllib.request
# keywd = "xpath"
keywd="楊守鶴"
url = "" #注意不是https
url_all=url+key_code
req = urllib.request.request(url_all)#通過url引數構建request物件
data = urllib.request.urlopen(req).read()#通過urlopen開啟構建的request物件
fhandle = open("d:/crawler/7.html", "wb")
fhandle.write(data)
fhandle.close()
post請求
我們在進行註冊登入的時候時常用到post請求
我們先開啟乙個網頁:
輸入資料提交後會顯示資訊。
如何使用爬蟲自動實現呢?
步驟:,我們設為url。之後我們在網頁右擊選擇檢視頁面源**,找到對應的form表單部分
,進行分析。
name:name="name
" type="text" />
passwd:name="pass" type="text" />
我們看到屬性值
我們使用字典形式 格式:
如:之後我們還要對資料進行編碼處理:使用urllib.parse.urlencode
然後建立request物件傳入url和資料,接著我們可以使用之前學過的add_header()新增頭資訊,模擬瀏覽器爬取。之後就按以往進行處理即可。
import urllib.request
import urllib.parse
url = ""
postdata=urllib.parse.urlencode().encode('utf-8')#將編碼設定為utf-8
req = urllib.request.request(url,postdata)
data = urllib.request.urlopen(req).read()
fhandle = open("d:/crawler/8.html", "wb")
fhandle.write(data)
fhandle.close()
**伺服器設定
有時候使用同乙個ip去爬取同乙個**,久了就會被對方伺服器遮蔽,怎麼辦??
這時我們就要使用一招:"瞞天過海、暗度陳倉",也就是使用**伺服器。
這裡有乙個**:/proxy 裡面有更新很多**ip
我們選擇乙個: 格式:"**:埠號"即:
110.52.235.249:9999
#實現使用**伺服器爬取url網頁功能
data=use_proxy(proxy_addr,"")#傳遞ip和要爬取的url
print(len(data))#//後續處理
如果:由於連線方在一段時間後沒有正確答覆或連線的主機沒有反應,連線嘗試失敗。>
說明ip可能失效了,要換乙個試試,實際上我們可以實現多個ip用程式實現乙個不行自動切換為下乙個。
此文是我在學習《精通python網路爬蟲》(韋瑋著)的總結,純手打。
python爬蟲第二天
時間字串轉換 contents獲取內容 strftime轉化時間格式 內文的提取 實參位置用空格分隔 加一級的標籤 import requests import json jd json.loads comments.text.strip 需剔除部分 抓取內文資訊方法寫成函式 commenturl ...
爬蟲第二天
作用 網路使用者去取得網路信任 1.突破自身ip限制,去訪問一些不能訪問的站點 2.提高網路速度,服務通過有比較大的硬碟快取區,當外界資訊訪問通過後,將資訊儲存在緩衝區,其他使用者訪問相同資訊,直接在緩衝區拿 3.隱藏真實ip,對於爬蟲來說為了隱藏自身ip,防止自身ip被封鎖 爬蟲 分類 1.ftp...
學python爬蟲第二天
墨跡少女,隨心學習,啊,好慢!import requests 定義請求的url url 定義請求頭 headers 定義輸入變數 input input post傳送的資料 data 傳送請求 res requests.post url url,headers headers,data data 接...