2301_81540574 2024-05-13 12:03 采纳率: 0%
浏览 3

使用beautifulsoup爬取时跳出JavaScript链接是为什么

运行如下代码后,无含a标签的元素输出


- i******
from bs4 import BeautifulSoup
# 目标网页的URL
url = 'https://www.pharmgkb.org/guidelineAnnotations'
# 发送HTTP请求获取网页内容
response = requests.get(url)
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.text, 'html.parser'
# 找到所有的<a>标签
a_tags = soup.find_all('a', href=True)
# 遍历并打印每个<a>标签的href属性
for tag in a_tags:

输出为一个链接

https://www.whatismybrowser.com/guides/how-to-enable-javascript/

请问原因

  • 写回答

3条回答 默认 最新

  • 笑面虎 2024-05-13 12:03
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【您想要解决的问题】:您遇到的问题是在使用Python的BeautifulSoup库爬取网页时,没有获取到含有<a>标签的元素,而是被重定向到了一个提示启用JavaScript的页面。

    【问题出现原因】:这个问题通常是因为目标网站使用了JavaScript来动态生成内容。BeautifulSoup只能解析静态的HTML内容,而无法执行JavaScript代码。因此,当您尝试使用BeautifulSoup来解析一个依赖JavaScript来渲染的页面时,您获取到的HTML可能是执行JavaScript之前的原始代码,而不是JavaScript执行后的最终结果。

    【问题解决方案】:要解决这个问题,您可以使用Selenium库,它可以通过模拟一个真实的浏览器环境来执行JavaScript代码,并获取到执行后的页面内容。这样,您就可以获取到动态生成的<a>标签了。

    【提供代码】:以下是使用Selenium获取网页中所有<a>标签的示例代码:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    # 设置Selenium不打开浏览器窗口
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    
    # 创建WebDriver对象
    driver = webdriver.Chrome(options=chrome_options)
    
    # 目标网页的URL
    url = 'https://www.pharmgkb.org/guidelineAnnotations'
    
    # 使用Selenium获取网页内容
    driver.get(url)
    
    # 获取页面源代码
    html_content = driver.page_source
    
    # 使用BeautifulSoup解析网页内容
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(html_content, 'html.parser')
    
    # 找到所有的<a>标签
    a_tags = soup.find_all('a', href=True)
    
    # 遍历并打印每个<a>标签的href属性
    for tag in a_tags:
        print(tag['href'])
    
    # 关闭WebDriver
    driver.quit()
    

    【代码运行方式】:要运行这段代码,您需要安装Selenium库和对应的WebDriver。对于Chrome浏览器,您需要下载ChromeDriver。确保下载与您的浏览器版本相匹配的ChromeDriver,并将其路径添加到系统的PATH环境变量中。

    【代码预期运行结果】:如果代码成功执行,它将打印出网页上所有<a>标签的href属性值。

    【推荐相关链接】:

    • Selenium官方文档:https://www.selenium.dev/documentation/en/
    • BeautifulSoup官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/
    • ChromeDriver下载:https://sites.google.com/a/chromium.org/chromedriver/downloads

    请注意,使用Selenium进行爬虫可能会对网站服务器造成较大压力,因此在使用时应当遵守网站的爬虫政策,并尽量限制请求频率。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月13日

悬赏问题

  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3