瀏覽器的請求 url=請求協議(http/https)+網站功能變數名稱+資源路徑+參數 http:超文本傳輸協議(以明文的形式進行傳輸),傳輸效率高,但不安全。 https:由http+ssl(安全套接子層)組成;傳輸之前數據先加密,之後解密獲取內容,傳輸效率低但安全。 HTTP協議之請求 1請求行 2. ...
瀏覽器的請求
url=請求協議(http/https)+網站功能變數名稱+資源路徑+參數
http:超文本傳輸協議(以明文的形式進行傳輸),傳輸效率高,但不安全。
https:由http+ssl(安全套接子層)組成;傳輸之前數據先加密,之後解密獲取內容,傳輸效率低但安全。
HTTP協議之請求
1請求行
2.請求頭(user-Agent:用戶代理【對方伺服器通過user-Agent知道當前請求資源的是神麽網站】)
3.請求體(get 請求沒有請求體,post有;get 請求把數據放在url地址中)
post請求常用於登入,註冊以及傳輸大文本時
HTTP協議之響應
1.響應頭(set cookie:對方服務通過該欄位設置cookie的值到本地)
2.響應體(url地址對應的響應內容)
網路爬蟲的邏輯
1.確定起始url
2.發送請求獲取響應
3.提取數據
4.保存
5構造下一個url 地址,迴圈2-5步。(使用retrying,當請求不成功時,重覆進行請求)
response.request.url:得到的是發送請求url地址
response.url是resonse響應的url地址
發送get post 請求獲取響應;
url="https://i.cnblogs.com"
headers={
}
response=request.get(url,headers=headers)
response=request.post(url,headers=headers,data={請求體字典【鍵值對格式】})
獲取網頁源碼內容 的方法;(依次使用三種方式一定可以獲取網頁的正確內容,當前面一種方式不能獲取到時,改用下一種)
1)response.content.decode()//把響應的二進位位元組流轉化為str 類型.預設使用的是utf-8編碼
2)response.content.decode("gbk")用指定的編碼進行編碼
3)response.text 瀏覽器會以自己猜測的編碼形式進行編碼
處理cookie相關請求的方法
1)直接放在headers中
2)把cookie放在字典中
3)先發送post請求,帶上cookie請求登入
session=request.session()// 實例化session對象
session.post(url,data,headers)// 獲取對方保存在本地的cookie內容
session.get(url) //session會自動帶上cookie
數據提取的方法:
json.loads 作用:把json字元串轉化為python類型
json.dumps 把python類型轉化為json字元串
ensure_ascill 能讓頁面中的中文字元正確顯示為中文
indent: 能夠讓下一行顯示時在下一行的基礎上顯示空格
xpath:一門從html中提取數據的語言
xpath語法:
1.選擇節點(標簽)/html/head/meta 表示選中head下的 所有meta標簽
2.//雙斜線 能夠從任一節點開始選擇
./a 表示當前節點下的a 標簽
3.@的用途
@的作用是取某個節點屬性的值
例如://div[@class='box1']/
4.獲取文本
/a/text() 表示獲取a標簽的文本
/a//text() 表示獲取a標簽下的所有文本(可能不是直接在a標簽下)