我正试图从网页上的"Addresses"选项卡中抓取信息:https://training.gov.au/Organisation/Details/90003,使用的是Python.然而,我遇到了一个问题,即使在指向正确的CSS Select 器或标记之后,代码也只返回空值.奇怪的是,当我指向"摘要"选项卡时,它可以正常工作.网站似乎只返回"摘要"标签的数据.我没有编程经验,所以我不确定是否有需要记住的具体考虑因素.

  1. 我正在try 从这个网页上的"地址"标签中抓取数据:https://training.gov.au/Organisation/Details/90003.

  2. 我已经判断了网页,并确定了相关的css Select 器,或作为抓取目标的标签.

  3. 我正在使用Python进行Web抓取,并try 了像Beautiful Soup和Request库.

  4. 当我从"摘要"选项卡中抓取数据时,我的代码可以正常工作,但当我试图从"Addresses"选项卡中抓取数据时,它返回空值.

  5. 我怀疑可能有一些特定的JavaScript或动态内容加载阻止了从"Addresses"选项卡中检索数据.

  6. 我将不胜感激任何指导如何访问和抓取数据从"地址"标签成功.

代码示例:

以下是我目前用来从"Addresses"选项卡中抓取数据的代码版本:

import requests
from bs4 import BeautifulSoup

# URL of the webpage
url = 'https://training.gov.au/Organisation/Details/90003'

# Send an HTTP GET request to fetch the webpage
response = requests.get(url)

# Check if the request was successful (status code 200)
if response.status_code == 200:
    # Parse the HTML content
    soup = BeautifulSoup(response.text, 'html.parser')

    # Use the CSS selector to target the element with id "rtoDetails-4"
    target_element = soup.select_one('#rtoDetails-1') # works for rtoDetails-1 but not other selector

    # Check if the element was found
    if target_element:
        # Extract and print the text content of the element
        print(target_element.text.strip())
    else:
        print("Target element not found.")
else:
    print("Failed to retrieve the webpage. Status code:", response.status_code)

预期输出:

我希望rtoDetail-4变量包含来自"Addresses"选项卡的信息,但它目前返回空.

其他信息:

对于如何处理网页上的动态内容或基于JavaScript的加载,任何见解或建议都将不胜感激. 如果我需要遵循特定的步骤,或者如果我遗漏了一些关键的东西,请提供详细的指导,因为我对编码相对较新. 首先感谢您的帮助!

推荐答案

您在页面上看到的地址是从外部URL加载的.您可以使用此示例如何下载正确的HTML:

import requests
from bs4 import BeautifulSoup

link = "https://training.gov.au/Organisation/Details/90003"
response = requests.get(link)
soup = BeautifulSoup(response.content, "html.parser")

link = soup.select_one('[href*="AjaxDetailsLoadAddresses"]')["href"]
link = "https://training.gov.au" + link

soup = BeautifulSoup(requests.get(link).content, "html.parser")

print(soup.get_text(strip=True, separator=" "))

打印:

...

Job title: Chief Executive Officer Organisation name: Technical and Further Education Commission Phone: (02) 7920 
...

Python相关问答推荐

决策树分类器的基础sklearn熵和log_loss标准是否有差异?

从收件箱获取特定列中的重复行

将C struct 的指针传递给Python中的ioctel

sys.modulesgo 哪儿了?

如何在超时的情况下同步运行Matplolib服务器端?该过程随机挂起

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

将numpy矩阵映射到字符串矩阵

Pandas 在时间序列中设定频率

将DF中的名称与另一DF拆分并匹配并返回匹配的公司

将整组数组拆分为最小值与最大值之和的子数组

如何在箱形图中添加绘制线的传奇?

比较2 PD.数组的令人惊讶的结果

max_of_three使用First_select、second_select、

Pandas 滚动最接近的价值

numpy卷积与有效

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

在Python中动态计算范围

未知依赖项pin—1阻止conda安装""

如何保持服务器发送的事件连接活动?

如何指定列数据类型