python运用requests模拟浏览器发送请求过程

Written by

in

文章目录
  • requests 是一个简单易用的 HTTP 库,可以模拟浏览器的请求行为。 通常需要设置请求头和 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 可以控制真实浏览器(如 Chrome、Firefox)进行自动化操作,适合需要执行 JavaScript 或处理动态内容的场景。 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 是一个现代浏览器自动化工具,支持 Chromium、Firefox 和 WebKit,提供了更强大的功能。 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()
  • 如果需要通过代理发送请求或控制超时时间,可以在请求中添加相关参数。 proxies = { “http”: “http://10.10.1.10:3128”, “https”: “http://10.10.1.10:1080”, } timeout = 10 # 超时时间(秒) response = requests.get(url, headers=headers, proxies=proxies, timeout=timeout)
  • 某些网站通过 JavaScript 动态加载内容,可以使用 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)
  • 如果需要提交表单数据,可以使用 requests 发送 POST 请求。 data = { “username”: “test”, “password”: “123456”, } response = requests.post(url, data=data, headers=headers) print(response.text) 通过以上方法,可以模拟浏览器发送请求并获取响应内容。根据实际需求选择合适的工具和技术方案。
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python使用Requests库进行网络接口测试的实现步骤 Python使用Selenium+Requests+OpenCV实现智能化的Web自动化系统 Python调用requests库实现自动化发牌功能 Python requests.post()返回406错误的常见原因及解决方案 Python requests库的安装教程实例代码 Python中Requests库的实现示例
  • 目录
    • 使用requests库模拟浏览器请求
    • 使用selenium自动化浏览器操作
    • 使用playwright进行高级浏览器模拟
    • 设置代理和超时
    • 处理动态加载内容
    • 模拟表单提交
    • 总结

    requests 是一个简单易用的 HTTP 库,可以模拟浏览器的请求行为。

    通常需要设置请求头和 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 可以控制真实浏览器(如 Chrome、Firefox)进行自动化操作,适合需要执行 JavaScript 或处理动态内容的场景。

    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 是一个现代浏览器自动化工具,支持 Chromium、Firefox 和 WebKit,提供了更强大的功能。

    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()
    

    如果需要通过代理发送请求或控制超时时间,可以在请求中添加相关参数。

    proxies = {
        "http": "http://10.10.1.10:3128",
        "https": "http://10.10.1.10:1080",
    }
    timeout = 10  # 超时时间(秒)
    
    response = requests.get(url, headers=headers, proxies=proxies, timeout=timeout)
    

    某些网站通过 JavaScript 动态加载内容,可以使用 seleniumplaywright 等待元素加载完成。

    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)
    

    如果需要提交表单数据,可以使用 requests 发送 POST 请求。

    data = {
        "username": "test",
        "password": "123456",
    }
    response = requests.post(url, data=data, headers=headers)
    print(response.text)
    

    通过以上方法,可以模拟浏览器发送请求并获取响应内容。根据实际需求选择合适的工具和技术方案。

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • Python使用Requests库进行网络接口测试的实现步骤
    • Python使用Selenium+Requests+OpenCV实现智能化的Web自动化系统
    • Python调用requests库实现自动化发牌功能
    • Python requests.post()返回406错误的常见原因及解决方案
    • Python requests库的安装教程实例代码
    • Python中Requests库的实现示例

    站内搜索