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

提取联系人和传真号的Python爬虫代码逻辑正确但无法运行

排查方案
  • 请求头未模拟浏览器环境:usaopps.com可能会校验请求头合法性,默认requests的请求头特征明显,服务器返回的是无有效数据的页面。把浏览器的完整请求头(比如User-Agent、Accept-Language)复制过来再发起请求:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.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.9'
    }
    resp = requests.get(target_url, headers=headers)
    
  • 动态内容未被渲染:如果联系人和传真号是通过JavaScript动态加载的,requests只能获取静态HTML源码,BeautifulSoup无法解析动态生成的元素。这种情况需要用Selenium、Playwright这类工具先渲染页面再解析:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Chrome()
    driver.get(target_detail_url)
    # 等待联系人元素加载完成
    contact_elem = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'contact-person'))
    )
    fax_elem = driver.find_element(By.CLASS_NAME, 'fax-number')
    print(f"Contact Person: {contact_elem.text}")
    print(f"Fax Number: {fax_elem.text}")
    driver.quit()
    
  • 元素选择器与实际DOM不匹配:网站可能更新过页面结构,你用的class、id或XPath路径已经失效。把resp.text保存为本地HTML文件,用浏览器开发者工具重新定位元素,修正选择器。比如原来用find('div', class_='old-contact-class'),现在要改成新的类名或标签结构。

  • 未进入企业详情页:如果联系人和传真号只存在于企业详情页,而你的代码只在搜索结果列表页查找,自然会返回None。确认遍历逻辑是否正确跳转到每个企业的详情页URL,再在详情页内提取数据。

  • 反爬机制拦截:检查请求的状态码,如果不是200,说明请求被拦截。可以尝试降低请求频率(添加time.sleep(2)),或者使用代理IP。另外,部分页面可能需要Cookie验证,可先手动登录网站,把Cookie复制到请求头中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:45:05