Python 如何使用JavaScript刮取呈现数据的网站

Python 如何使用JavaScript刮取呈现数据的网站,python,python-3.x,selenium,web-scraping,Python,Python 3.x,Selenium,Web Scraping,我正在抓取这个网站,我想在“选择你的船”文本的右侧找到“箭头”文本 我已经尝试使用requests和BeautifulSoup来选择包含文本的标记,当我检查页面时,我可以看到文本在哪里,它在标记之间,我尝试使用soup来选择它。选择(“.name”)我仍然得到空字符串,可能数据是用Javascript呈现的,所以我尝试了selenium,并尝试在选择元素之前等待元素加载,但我的代码中仍然没有任何内容 try: element = WebDriverWait(driver, 20).unt

我正在抓取这个网站,我想在“选择你的船”文本的右侧找到“箭头”文本

我已经尝试使用requests和BeautifulSoup来选择包含文本的标记,当我检查页面时,我可以看到文本在哪里,它在标记之间,我尝试使用soup来选择它。选择(“.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()

Arrow

对于这样一个您不需要与页面交互的任务来说,Selenium可能有些过分。这只是几行文字:

来自请求\u html导入HTMLSession
url='1〕https://robertsspaceindustries.com/pledge/ship-upgrades?to-船舶=173'
session=HTMLSession()
r=session.get(url)
r、 html.render()
打印(r.html.find('.info>.name',first=True).text)
按预期生成
箭头

对于此特定站点,您还可以在内容中的其他位置进行检查,以获取所需信息,而无需JavaScript支持,例如:

导入json
导入请求
url='1〕https://robertsspaceindustries.com/pledge/ship-upgrades?to-船舶=173'
r=请求。获取(url)
text=r.text
json_start_text='fromShips:'
json\u start=text.index(json\u start\u text)+len(json\u start\u text)
json_end=text.index(']',json_start)
json_text=text[json_开始:json_结束+1]
data=json.load(json_文本)
对于收货数据:
名称=船舶['name']
msrp=船舶['msrp']
打印(f'{name}{msrp}')
导致

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
...

您是否使用了驱动程序.maximize\u window()或以最大化状态运行浏览器的先决条件?