如何使用JavaScrip抓取呈现数据的网站

2024-05-16 11:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取这个网站https://robertsspaceindustries.com/pledge/ship-upgrades?to-ship=173我想得到'选择你的船'文本右侧的'箭头'文本

我尝试过使用requests和BeautifulSoup来选择包含文本的标记,当我检查页面时,我可以看到文本在哪里,它在我尝试选择它的标记之间汤。选择(“.name”)我仍然得到空字符串,可能是数据是用Javascript呈现的,所以我尝试了selenium并尝试等待元素加载在选择它之前,这里仍然没有我的代码

try:
    element = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.CLASS_NAME, "name"))
    )

    select_tags = driver.find_elements_by_css_selector(".name")
    for tag in select_tags:
        print(tag.text)
finally:
    driver.quit()

箭头


Tags: namehttps标记文本com网站tagdriver
1条回答
网友
1楼 · 发布于 2024-05-16 11:04:32

对于这样一个不需要与页面交互的任务,Selenium可能会有些过火。这是几行带有^{}

from requests_html import HTMLSession

url = 'https://robertsspaceindustries.com/pledge/ship-upgrades?to-ship=173'

session = HTMLSession()
r = session.get(url)
r.html.render()
print(r.html.find('.info > .name', first=True).text)

它按预期生成Arrow。在

对于这个特定的站点,您还可以在内容的其他地方进行检查,以获得不需要JavaScript支持的信息,例如:

^{pr2}$

结果是

Aurora ES $20.00
P52 Merlin $20.00
Aurora MR $25.00
P72 Archimedes $30.00
Mustang Alpha $30.00
Aurora LX $30.00
...
Arrow $75.00
...

相关问题 更多 >