型別免費**
為了避免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...