Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否所有DIV都可以进行刮削(美容、硒)?_Python_Selenium_Beautifulsoup - Fatal编程技术网

Python 是否所有DIV都可以进行刮削(美容、硒)?

Python 是否所有DIV都可以进行刮削(美容、硒)?,python,selenium,beautifulsoup,Python,Selenium,Beautifulsoup,我试图从网站上搜集一些信息——对于大多数div信息来说,这很好——但我在阅读一些特定div时遇到了问题。起初,我只是用“正常”的bs4请求进行了尝试——但后来也用了selenium——但我仍然没有得到任何数据 下面你可以找到我的完整代码。 它适用于此搜索的响应: tmpDiv = soup.find ("div", {"id": "financial-strength"}) 但它不适用于该部门: tmpDiv = soup.find

我试图从网站上搜集一些信息——对于大多数div信息来说,这很好——但我在阅读一些特定div时遇到了问题。起初,我只是用“正常”的bs4请求进行了尝试——但后来也用了selenium——但我仍然没有得到任何数据

下面你可以找到我的完整代码。 它适用于此搜索的响应:

tmpDiv = soup.find ("div", {"id": "financial-strength"})
但它不适用于该部门:

tmpDiv = soup.find ("div", {"id": "analyst-estimate"})
它只输出数据

<div class="children" data-v-39722e0c="" id="analyst-estimate" style="min- 
 height:200px;display:block;">
</div>
我听说这可能是一个“延迟加载网站”——但selenium访问是否应该等到整个网站加载了所有内容后再进行?

会发生什么? 有两件事,为什么你得不到结果:

  • 在使用
    selenium
    请求网站后,您还可以使用
    requests
    请求网站,并将响应分配给soup

  • 数据不会被加载,如果不需要的话,这就是你已经发现的-->“延迟加载网站”

  • 如何解决这个问题?
  • 删除所有
    请求
    特定行

  • 将所需元素滚动到视图中,以便加载数据:

    element = driver.find_element_by_id("analyst-estimate")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    
  • 示例

    请注意,我添加了我的webdriver路径,因此您必须对其进行编辑

    输出

    
    分析师估计
    2021年9月
    2022年9月
    2023年9月
    收入(百万美元)
    313003.40
    328872.10
    341577.60
    息税前利润(百万美元)
    76803.87
    81038.89
    84830.53
    息税折旧摊销前利润(百万美元)
    88706.60
    92604.88
    94034.53
    每股收益(元)
    3.94
    4.28
    4.55
    无NRI的每股收益(美元)
    3.97
    4.27
    4.55
    每股收益增长率(%)
    10.04
    每股股息(美元)
    0.74
    0.82
    1.15
    
    效果很好-非常感谢!顺便说一句:没有selenium/chromedriver.exe也有办法做到这一点吗?关于你的问题,请看
    element = driver.find_element_by_id("analyst-estimate")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    
    import time
    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    
    link = "https://www.gurufocus.com/stock/AAPL/summary"
    driver = webdriver.Chrome ('C:\Program Files\ChromeDriver\chromedriver.exe')
    driver.get (link)
    
    time.sleep(2.5)
    
    element = driver.find_element_by_id("analyst-estimate")
    driver.execute_script("arguments[0].scrollIntoView();", element)
    
    time.sleep(1)
    
    soup = BeautifulSoup (driver.page_source, 'html.parser')
    
    # tmpDiv = soup.find ("div", {"id": "financial-strength"})
    tmpDiv = soup.find ("div", {"id": "analyst-estimate"})
    print(tmpDiv.prettify())