想要採集資料,要明確要得到的內容是什麼?是HTML原始碼,還是Json格式的字串等。
抓取大多數情況屬於get請求,即直接從對方伺服器上獲取資料。
Python中自帶urllib及urllib2這兩個模組,基本上能滿足一般的頁面抓取。
urllib 是 Python 自帶的庫,可以用來進行網路資料的收集和下載。
from urllib import request
url=’time.geekbang.org/'
response=request.urlopen(url,timeout=1)
print(response.read().decode(‘utf-8’))
只需 4 行,就可以拿到極客時間的首頁網頁程式碼。當然,你會發現首頁網頁的程式碼只有一部分,這是因為極客時
間的大量資料都是通過 JS 請求後臺載入的。
1、get 方法傳送資料
此外,對於帶有查詢欄位的url,get請求一般會將來請求的資料附在url之後,以?分割url和傳輸資料,多個引數用&連線。
import requests data = {‘wd’:’nike’, ‘ie’:’utf-8’} url=’https://www.baidu.com' response = requests.get(url=url, params=data)
如下示例:
2、post 方法傳送資料
預設的請求格式是 application/x-www-form-urlencoded
from urllib import request
from urllib import parse
data=bytes(parse.urlencode({‘word’:’hello wlzcool’}),encoding=’utf8’)
url=’httpbin.org/post'
response=request.urlopen(url,data=data)
print(response.read().decode(‘utf-8’))
如下示列:
{
“args”: {},
“data”: “”,
“files”: {},
“form”: {
“word”: “hello wlzcool”
},
“headers”: {
“Accept-Encoding”: “identity”,
“Content-Length”: “18”,
“Content-Type”: “application/x-www-form-urlencoded”,
“Host”: “httpbin.org”,
“User-Agent”: “Python-urllib/3.6”,
“X-Amzn-Trace-Id”: “Root=1-5e819df5-cc1d4ab38f5b4a59c23d09e9”
},
“json”: null,
“origin”: “”,
“url”: “http://httpbin.org/post"
}
修改 User-Agent
有些網站會檢查你是不是真的瀏覽器訪問,還是機器自動訪問的。這種情況,加上User-Agent,表明你是瀏覽器訪問即可。有時還會檢查是否帶Referer資訊還會檢查你的Referer是否合法,一般再加上Referer。
User-Agent可以用億牛雲提供給的真實庫,Referer的來源可以偽裝成百度搜尋來的。
headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.1276.73 Safari/537.36’, ‘Referer’:’https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nike'} response = requests.get(url=url, headers=headers)
如果想真正的做好一個爬蟲,需要自己努力學習python爬蟲知識,網路爬蟲有很多限制,需要自己去實踐研究,做好爬蟲程式的相關優化,累計經驗,才能採集到想要的資料。
本作品採用《CC 協議》,轉載必須註明作者和本文連結