python運(yùn)用requests模擬瀏覽器發(fā)送請求過程
使用requests庫模擬瀏覽器請求
requests 是一個簡單易用的 HTTP 庫,可以模擬瀏覽器的請求行為。
通常需要設(shè)置請求頭和 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自動化瀏覽器操作
selenium 可以控制真實(shí)瀏覽器(如 Chrome、Firefox)進(jìn)行自動化操作,適合需要執(zhí)行 JavaScript 或處理動態(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)行高級瀏覽器模擬
playwright 是一個現(xiàn)代瀏覽器自動化工具,支持 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ā)送請求或控制超時(shí)時(shí)間,可以在請求中添加相關(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)
處理動態(tài)加載內(nèi)容
某些網(wǎng)站通過 JavaScript 動態(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 請求。
data = {
"username": "test",
"password": "123456",
}
response = requests.post(url, data=data, headers=headers)
print(response.text)
通過以上方法,可以模擬瀏覽器發(fā)送請求并獲取響應(yīng)內(nèi)容。根據(jù)實(shí)際需求選擇合適的工具和技術(shù)方案。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python為Django項(xiàng)目上的每個應(yīng)用程序創(chuàng)建不同的自定義404頁面(最佳答案)
這篇文章主要介紹了python為Django項(xiàng)目上的每個應(yīng)用程序創(chuàng)建不同的自定義404頁面,本文給出了最佳答案,大家可以跟隨小編一起學(xué)習(xí)下2020-03-03
python+unittest+requests實(shí)現(xiàn)接口自動化的方法
這篇文章主要介紹了python+unittest+requests實(shí)現(xiàn)接口自動化的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11

