You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何爬取ACS出版物网站并规避HTTP 403错误?

解决ACS网站爬取403 Forbidden问题的方案

针对你用requests爬取ACS网站遇到的403问题,即使更换User-Agent仍无法解决,以下是几个实用的解决思路,适合你每日数次的小规模爬取场景:

1. 补充完整的请求头字段

仅设置User-Agent不足以模拟真实浏览器请求,网站的反爬机制会检查更多请求头字段。建议补充以下常见字段:

import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1"
}

session = requests.Session()
response = session.get("https://pubs.acs.org", headers=headers)
print(response.status_code)

使用requests.Session()可以自动维持会话Cookie,更贴近浏览器的访问模式。

2. 用浏览器自动化工具模拟真实访问

如果请求头补充后仍无效,建议使用Selenium或Playwright这类浏览器自动化工具,它们会真实启动浏览器执行请求,几乎完全模拟人的操作,绕过大多数基础反爬:

Selenium示例代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

options = Options()
options.add_argument("--headless=new")  # 无头模式,不显示浏览器窗口
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://pubs.acs.org")
    time.sleep(2)  # 模拟页面加载等待
    page_source = driver.page_source
    print("页面获取成功")
finally:
    driver.quit()

3. 控制爬取频率

即使是小规模爬取,也需要控制请求间隔,避免短时间内多次请求触发反爬。可以在每次请求后添加time.sleep(3-5)的延迟,模拟人的操作节奏。

重要提醒

虽然你是小规模爬取,但该网站的robots.txt明确禁止自动爬虫,建议先查看ACS是否提供官方API或合法的数据获取渠道,避免违反网站的使用条款或相关法律规定。

内容的提问来源于stack exchange,提问作者Overwatchgamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:43:54