Python爬蟲第二天

2022-06-28 06:42:08 字數 2932 閱讀 7137

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 接...