1. 程式人生 > >爬蟲學習筆記(1)

爬蟲學習筆記(1)

在訪問網站時,向伺服器傳送請求主要有兩種方式

GET方法 請求指定的頁面資訊,並且返回實體主體。

POST方法 向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案),資料被包含在請求體中,POST請求可能會導致新的資源建立和/或已有資源的修改。

 

網頁抓取-----就是將URL中指定的網路資源從網路流中讀取出來並且儲存到本地。在phyton中有很多庫可以用來抓取網頁,這裡我先學習的是urllib2

urllib2 --- urlopen(url,date,timeout) 方法

直接傳送一個請求到指定的url地址

在這個方法中區分訪問網頁時是GET方法,還是POST方法就是看data值,有date引數就是POST,否則就是GET。

timeout 就是向指定url地址傳送請求時,如果在timeout規定的時間內,伺服器沒有訪問,網頁就報錯,說伺服器無響應。

 

response = urlopen("https://www.baidu.com/")

向百度網址傳送請求,並且返回伺服器相應的類檔案物件

換言之,response是類檔案物件。

這個類檔案物件是支援phyton檔案物件的操作方法的,比如read,write等。//read讀取檔案中的全部內容並且返回字串。

 

 

 

獲取網頁原始碼例項://phyton3格式

import urllib.request

response = urllib.request.urlopen("http://www.baidu.com/")

html = response.read()

print(html)

 

但是這個類庫有一個缺點,就是其預設的User-Agent是Phyton-urllib/版本號,這會讓伺服器運維人員秒看到你是爬蟲。

作為一個爬蟲,我們一定要重新構建我們的User-Agent

最關鍵的是urllib不支援構造 http 請求

 

我們使用urllib.request方法重新構建一個請求物件

 

import urllib.request

request1=urllib.request.Request('http://www.baidu.com/')
request1.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36')
response=urllib.request.urlopen(request1)

html = response.read()
mystr2=html.decode("utf-8")
print(mystr2)
 

 這樣頁面拿到這個請求之後就會認為我們是一個瀏覽器。哈哈