requests模組的高階使用

2022-06-23 04:57:12 字數 4494 閱讀 9604

型別免費**

為了避免ip失效,我們應該構建乙個**池,裡面存放可用的**

**池的構建也是通過爬蟲實現的,我們可以去快**上去爬取,但是頻繁訪問快**也是會被封的,所以我們需要去買一些**來爬取快**,有點以小博大的意思(這裡的**選取主要用於舉例,主要是方法)

# **池的用法

# ip_pool = [

# ,

# ,

# ...

# ]# url = ''

# page_text = requests.get(url=url,headers=headers,proxies=random.choice(ip_pool)).text

# with open('ip.html','w',encoding='utf-8') as fp:

# fp.write(page_text)

import requests

from lxml import etree

import random

headers =

# 去**精靈購買**,並通過爬蟲快速提取到購買的**ip

ip_url = '.....'(購買後會生成乙個url連線)

page_text = requests.get(url=ip_url,headers=headers).text

tree = etree.html(page_text)

ip_pool = tree.xpath('//body//text()')

# 爬取快**

tr_list = tree.xpath('//*[@id="list"]/table//tr')[1:] # 注意!tbody不能出現在xpath表示式中

print(len(proxy_http_list),len(proxy_https_list)) #檢視個數

# 檢查**是否可用

# 讓其隨意訪問乙個**(http/https要分開),如果狀態碼為200,即為可用

... #將可用ip儲存起來

模擬登陸

實現驗證碼識別

打碼兔雲打碼

動態變化的請求引數

模擬登陸失敗的話檢查以下原因

# 對雪球網的新聞資料進行爬取  

# 手動處理cookie

import requests

headers =

url = 'statuses/hot/listv2.json?since_id=-1&max_id=105684&size=15'

page_text = requests.get(url=url,headers=headers).json()

print(page_text)

#建立session物件,自動處理cookie

import requests

headers =

session = requests.session()

session.get('',headers=headers) #先去訪問一次主頁,獲取cookie

url = 'statuses/hot/listv2.json?since_id=-1&max_id=105684&size=15'

page_text = session.get(url=url,headers=headers).json()

print(page_text)

# 超級鷹定義的類

import requests

from hashlib import md5

class chaojiying_client(object):

def __init__(self, username, password, soft_id):

self.username = username

password = password.encode('utf8')

self.password = md5(password).hexdigest()

self.soft_id = soft_id

self.base_params =

self.headers =

def postpic(self, im, codetype):

"""im: 位元組

codetype: 題目型別 參考

"""params =

params.update(self.base_params)

files =

r = requests.post('', data=params, files=files, headers=self.headers)

return r.json()

def reporterror(self, im_id):

"""im_id:報錯題目的id

"""params =

params.update(self.base_params)

r = requests.post('', data=params, headers=self.headers)

return r.json()

# 識別古詩文網的驗證碼 

# 模擬登陸

# 獲取驗證碼

def transformimgdata(img_path,img_type):

chaojiying = chaojiying_client(username, password, 軟體id) # 此處依次輸入超級鷹使用者名稱,密碼和生成的軟體id

im = open(img_path, 'rb').read()

return chaojiying.postpic(im, img_type)['pic_str']

import requests

headers =

url = ''

# session獲取cookie

session = requests.session()

# 獲取驗證碼

page_text = session.get(url=url,headers=headers).text

tree = etree.html(page_text)

img_url = ''+tree.xpath('//*[@id="imgcode"]/@src')[0] #驗證碼

# 獲取動態資料

__viewstategenerator = tree.xpath('//*[@id="__viewstategenerator"]/@value')

__viewstate = tree.xpath('//*[@id="__viewstate"]/@value')

# 解析出驗證碼

# 模擬登陸

login_url = '?from='

data =

login_page = session.post(url=login_url,headers=headers,data=data).text

with open('./login.html','w',encoding='utf-8') as fp:

fp.write(login_page)

requests模組高階使用

編輯本隨筆 cookie作用 伺服器使用cookie來記錄客戶端的狀態資訊 實現流程 執行登陸操作 獲取cookie 在發起個人主頁請求時,需要將cookie攜帶到該請求中 注意 session物件,也可以傳送請求,如果伺服器端會給客戶端返回cookie,session物件自動將cookie進行儲存...

Python高階(requests模組)

requests 是用python語言編寫,基於 urllib的第三方庫,在呼叫http介面,以及http測試時常用。需要學會requests與response,其中response是requests請求返回的物件。1.requests.get url,params none,kwargs 2.re...

requests模組的使用

寫在前面的話 在學習爬蟲入門時,會常用到requests模組,熟悉這個模組的使用需要熟悉http,https 及瀏覽器的請求原理。初次接觸爬蟲時了解下,掌握瀏覽器的請求過程和爬蟲的本質,學起來就輕鬆多啦。get response requests.get url,headers headers ge...