接著上篇,繼續講解http協議
老司機,帶你用30行代碼爬取高清美女寫真,附安裝包+原始碼
這里只講解爬蟲用得到部分;
瀏覽器的決議
F12打開,點擊Network,F5重繪,就可以看到

HTTP客服端協議

url決議

http://www.demo.com:8080/list/index.php?boardID=5&ID=24618&page=1#name
1.協議部分
該URL的協議部分為“http:”,常見的有http:,和https:,其他的還有ftp,utp

2域名部分
該URL的域名部分為“www.demo.com”,

常見域名后綴有.com/.cn/.net/

內網通常使用IP作為域名
3.埠部分
跟在域名后面的數字是埠,域名和埠之間使用“:”作為分隔符,
埠不是一個URL必須的部分,如果省略埠部分,將采用默認埠80

4、虛擬目錄部分:
從域名后的第一個“/”開始到最后一個“/”為止,是虛擬目錄部分,
虛擬目錄也不是一個URL必須的部分,本例中的虛擬目錄是“/list/”

5、檔案名部分:
從域名后的最后一個“/”開始到“?”為止,
是檔案名部分,如果沒有“?”,則是從域名后的最后一個“/”開始到“#”為止,是檔案部分,
如果沒有“?”和“#”,那么從域名后的最后一個“/”開始到結束,都是檔案名部分,
本例中的檔案名是“index.asp”,檔案名部分也不是一個URL必須的部分,如果省略該部分,則使用默認的檔案名

6、錨部分:
從“#”開始到最后,都是錨部分,本例中的錨部分是“name”,錨部分也不是一個URL必須的部分

7、引數部分:
從“?”開始到“#”為止之間的部分為引數部分,又稱搜索部分、查詢部分,本例中的引數部分為“boardID=5&ID=24618&page=1”,引數可以允許有多個引數,引數與引數之間用“&”作為分隔符,

HTML 請求方法:Request Method:
get:
?GET 請求可被快取
?GET 請求保留在瀏覽器歷史記錄中
?GET 請求可被收藏為書簽
?GET 請求不應在處理敏感資料時使用
?GET 請求有長度限制
?GET 請求只應當用于取回資料(不修改)
Python模擬get請求
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
res = requests.get('http://www.baidu.com', params=payload)
print(res.url)
http://www.baidu.com?key1=value1&key2=value2&key2=value
post:
?POST 請求不會被快取
?POST 請求不會保留在瀏覽器歷史記錄中
?POST 不能被收藏為書簽
?POST 請求對資料長度沒有要求
Python模擬post請求
import requests
# Request URL
url = 'https://www.XX.com/Goods/GoodsDetail'
# Request Data
data = dict(
#引數
id=13404
)
response = requests.post(url, data)
print(response) #請求狀態
print(response.content) #回傳結果
put:
PUT 用于將資料發送到服務器來創建/更新資源,
POST 和 PU T之間的區別在于 PUT 請求是冪等的(idempotent),也就是說,多次呼叫相同的 PUT 請求將始終產生相同的結果,相反,重復呼叫POST請求具有多次創建相同資源的副作用,
# 使用urllib2
import urllib2
url="http://localhost"
param='{"userid":1}'
request=urllib2.Request(url.param)
request.add_header("Content-Type","application/json")
request.add_header("Accept","application/json")
request.get_method=lambda :"GET"#"GET,POST,PUT,DELETE"
response=urllib2.urlopen(request)
response_txt=response.read()
response_header=response.info()
DELETE
DELETE 方法洗掉指定的資源,
user-agent:
瀏覽器標識–出于兼容及推廣等目的,很多瀏覽器的標識相同,因此瀏覽器標識并不能說明瀏覽器的真實版本,真實版本資訊在 UA 字串尾部可以找到,

Python 添加ua
req = request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 UBrowser/4.0.3214.0 Safari/537.36')
# 正常訪問
rsp = request.urlopen(req)
html = rsp.read().decode()
print(html)
掌握這個,對網頁采集有一個初步的認識,引數配置也會更加清晰,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294724.html
標籤:python
