python運(yùn)用requests模擬瀏覽器發(fā)送請(qǐng)求過程
使用requests庫模擬瀏覽器請(qǐng)求
requests 是一個(gè)簡單易用的 HTTP 庫,可以模擬瀏覽器的請(qǐng)求行為。
通常需要設(shè)置請(qǐng)求頭和 Cookies 來偽裝成瀏覽器。
import requests
url = "https://example.com"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
}
cookies = {"session_id": "123456789"}
response = requests.get(url, headers=headers, cookies=cookies)
print(response.text)
使用selenium自動(dòng)化瀏覽器操作
selenium 可以控制真實(shí)瀏覽器(如 Chrome、Firefox)進(jìn)行自動(dòng)化操作,適合需要執(zhí)行 JavaScript 或處理動(dòng)態(tài)內(nèi)容的場景。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless") # 無頭模式
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")
print(driver.page_source)
driver.quit()
使用playwright進(jìn)行高級(jí)瀏覽器模擬
playwright 是一個(gè)現(xiàn)代瀏覽器自動(dòng)化工具,支持 Chromium、Firefox 和 WebKit,提供了更強(qiáng)大的功能。
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # 非無頭模式
page = browser.new_page()
page.goto("https://example.com")
print(page.content())
browser.close()
設(shè)置代理和超時(shí)
如果需要通過代理發(fā)送請(qǐng)求或控制超時(shí)時(shí)間,可以在請(qǐng)求中添加相關(guān)參數(shù)。
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
}
timeout = 10 # 超時(shí)時(shí)間(秒)
response = requests.get(url, headers=headers, proxies=proxies, timeout=timeout)
處理動(dòng)態(tài)加載內(nèi)容
某些網(wǎng)站通過 JavaScript 動(dòng)態(tài)加載內(nèi)容,可以使用 selenium 或 playwright 等待元素加載完成。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.get("https://example.com")
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "dynamic-content"))
)
print(element.text)
模擬表單提交
如果需要提交表單數(shù)據(jù),可以使用 requests 發(fā)送 POST 請(qǐng)求。
data = {
"username": "test",
"password": "123456",
}
response = requests.post(url, data=data, headers=headers)
print(response.text)
通過以上方法,可以模擬瀏覽器發(fā)送請(qǐng)求并獲取響應(yīng)內(nèi)容。根據(jù)實(shí)際需求選擇合適的工具和技術(shù)方案。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python網(wǎng)絡(luò)編程之TCP通信實(shí)例和socketserver框架使用例子
這篇文章主要介紹了python網(wǎng)絡(luò)編程之TCP通信實(shí)例和socketserver框架使用例子,需要的朋友可以參考下2014-04-04
Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Python字符串處理實(shí)現(xiàn)單詞反轉(zhuǎn)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Python基于tkinter canvas實(shí)現(xiàn)圖片裁剪功能
這篇文章主要介紹了Python基于tkinter canvas實(shí)現(xiàn)圖片裁剪功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
如何用pandas讀取一個(gè)文件或某個(gè)文件夾下所有文件
這篇文章主要介紹了如何用pandas讀取一個(gè)文件或某個(gè)文件夾下所有文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Python中def()函數(shù)的實(shí)戰(zhàn)練習(xí)題
def是define的縮寫,用來自定義函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python中def()函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
numpy求矩陣的特征值與特征向量(np.linalg.eig函數(shù)用法)
這篇文章主要介紹了numpy求矩陣的特征值與特征向量(np.linalg.eig函數(shù)用法),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
python網(wǎng)絡(luò)爬蟲精解之正則表達(dá)式的使用說明
正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯2021-09-09

