【问题标题】:Using Selenium and Python to scrape Morningstar website. Selenium doesn't download the full webpage使用 Selenium 和 Python 抓取晨星网站。 Selenium 不会下载完整的网页
【发布时间】:2020-05-12 08:13:03
【问题描述】:

这是我的代码:

from selenium import webdriver
import pandas as pd
from lxml import etree

url = 'https://www.morningstar.com/stocks/xbsp/UGPA3/quote'
browser = webdriver.Chrome()
browser.get(url)
htmlpage = browser.page_source

doc = etree.HTML(htmlpage)
cap = doc.xpath(
    '/html/body/div[1]/div/div/div[3]/main/div[2]/div/div/div[1]/sal-components/section/div/div/div[1]/div/div[2]/div/div/div/div[2]/ul/li[7]/div/div[2]/text()')

print(cap)

我正在尝试从网页上抓取市值。

在将 htmlpage 变量写入文件后,我发现问题在于它没有下载整个页面。它下载了 2228 KB,而我的浏览器下载了 2664 KB 的 .html 文件和一个不必要的文件夹。如果我使用浏览器手动保存页面并将其内容用作 etree.HTML() 的输入,它可以工作,但我想自动化。

【问题讨论】:

  • 指定实际问题,而你只是想刮市值?
  • 我需要从这个页面和类似页面中刮取许多值,但我猜我是否可以在这里刮取市值,我也可以做其他的。问题是我打印的 cap 变量是空的,因为我试图找到的 xpath 不在 Selenium 下载的范围内

标签: python selenium xpath web-scraping morningstar


【解决方案1】:

试试这个

    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    import time

    CHROME_DRIVER_PATH = "/usr/local/bin/chromedriver"

    url = 'https://www.morningstar.com/stocks/xbsp/UGPA3/quote'
    browser = webdriver.Chrome(executable_path=CHROME_DRIVER_PATH)

    browser.get(url)

    time.sleep(2)

    # get cap  value from page source and wait for element is present
    cap = WebDriverWait(browser, 10).until(
        EC.element_to_be_clickable((By.XPATH,
                                    '//*[@id="__layout"]/div/div[3]/main/div[2]/div/div/div[1]/sal-components/section/div/div/div[1]/div/div[2]/div/div/div/div[2]/ul/li[7]/div/div[2]')))
    cap_value = cap.text
    print(cap_value)

【讨论】:

  • 哇!非常感谢!唯一需要的是添加'time.sleep(2)'
猜你喜欢
  • 2017-05-12
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多