Python_爬蟲_三

Request

使用request庫比urllib更加的方便

response.context 和 response.text的區別:
response.context返回bytes,未解碼
response.text返回str,由requests 解碼,解碼結果可能爲亂碼,因此我們通常需要使用response.context.decode(‘utf-8’)選擇合適的編碼方式來手動解碼

  • request發送Get請求:
# -*- coding: UTF-8 -*-

import requests

url = 'https://www.baidu.com/s'
# print(type(requests.get(url=url).content)) # bytes
# print(requests.get(url=url).content)

# print(type(requests.get(url=url).text))  # str
# print(requests.get(url=url).text)

params = {
    'wd': '中國'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit'
                  '/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
}
response = requests.get(url, params=params, headers=headers)
with open('baidu.html', 'w', encoding='utf-8') as f:
    f.write(response.content.decode('utf-8'))

print(response.url)
  • request發送Post請求:

使用requests發送post請求很簡單,直接調用request.post方法就可以了,如果返回時json數據,那麼可以使用response.json()的方法,直接將json字符串轉換爲字典

# -*- coding: UTF-8 -*-

import requests

url = 'https://www.lagou.com/jobs/companyAjax.json?needAddtionalResult=false'
data = {
    'first': 'true',
    'pn': 1,
    'kd': 'python'
}

headers = {
    'Referer': 'https://www.lagou.com/zhaopin/Python/?labelWords=label',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit'
                  '/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
}
response = requests.post(url, data=data, headers=headers)
print(type(response.json()))
print(response.json())
  • requests使用代理
    通過proxies這個關鍵字參數,既可以簡單的使用代理
# -*- coding: UTF-8 -*-

import requests

url = 'http://httpbin.org/ip'

proxy = {
    'http': '1.198.72.156:9999'
}

response = requests.get(url, proxies=proxy)
print(response.text)
  • requests處理cookie信息
    如果想要在多次請求中共享cookie,那麼應該使用session。
    示例如下:
    通過第一次的post進行登陸,後續需要登陸才能訪問的頁面就可以共享登陸得到的cookie
# -*- coding: UTF-8 -*-
import requests

url = 'xxx.xx.xx'

data = {
    'user': 'xxx',
    'password': 'xxx'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit'
                  '/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36',
}

session = requests.session()
session.post(url, data=data, headers=headers)

response = session.get('xxx.xxx.xxx')
  • requests處理不信任的SSL證書
    對於那些不信任的ssl網站,需要加上verify=false這個參數
    示例:
resp = requests.get('url', verify=False)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章