HBR异步加载动态网页爬取失效,请求修复指导
修复HBR爬虫的解决方案
问题分析
HBR当前页面内容大概率是通过JavaScript动态渲染的,直接用requests获取的静态HTML仅包含初始骨架内容(也就是你看到的第一个<p>标签),剩余内容需要浏览器执行JS后才会插入DOM。你没找到异步API,说明内容可能是通过内联JS或其他客户端逻辑生成的。
具体修复方案
1. 使用浏览器自动化工具(推荐)
用Selenium或Playwright模拟真实浏览器加载页面,等待JS执行完成后再抓取内容。
示例代码(Selenium)
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC url = 'https://hbr.org/2023/08/mastering-the-art-of-the-request' # 初始化Chrome浏览器(需提前安装对应版本的ChromeDriver) driver = webdriver.Chrome() driver.get(url) # 等待文章内容加载完成,最多等待10秒 try: # 等待目标容器出现 article_body = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "article-body")) ) # 获取所有<p>标签的HTML内容 paragraphs = article_body.find_elements(By.TAG_NAME, "p") art = [p.get_attribute('outerHTML') for p in paragraphs] finally: driver.quit() print(art)
示例代码(Playwright)
from playwright.sync_api import sync_playwright url = 'https://hbr.org/2023/08/mastering-the-art-of-the-request' with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.goto(url) # 等待文章容器加载完成 page.wait_for_selector('.article-body') # 获取所有<p>标签的HTML art_elements = page.query_selector_all('.article-body p') art = [elem.inner_html() for elem in art_elements] browser.close() print(art)
2. 检查并更新DOM选择器
HBR可能修改了文章容器的类名,你可以通过浏览器开发者工具(F12)确认:
- 定位文章正文的父容器,查看其class或属性是否变更
- 比如当前容器类名可能改为
article-body__content,需要同步更新XPath/CSS选择器
3. 补充完整请求头
HBR的反爬机制可能验证了更多请求头字段,除User-Agent外,可补充以下字段:
headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) 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": "en-US,en;q=0.5", "Referer": "https://hbr.org/", "Connection": "keep-alive" }
注意:若需要登录才能查看完整内容,需从浏览器真实请求中复制Cookie字段添加到headers。
注意事项
- 频繁爬取易触发反爬,建议添加请求间隔(如
time.sleep(2)) - 严格遵守HBR的
robots.txt规则,避免违规爬取
内容的提问来源于stack exchange,提问作者jay queue
相关产品推荐
相关产品推荐

