【问题标题】:Selenium: page_source doesn't change after click different tag optionsSelenium:点击不同的标签选项后 page_source 不会改变
【发布时间】:2017-08-12 01:06:35
【问题描述】:

我想获得基金会的资产,这是主页。

在这个页面,我可以点击2015,2014...不同的年份标签,下面的资产会按年份变化。但是当我尝试使用beautifulsoup获取页面源时,页面源始终是一样的,也就是说,资产始终是2015年的数字,从不随年份变化。我不知道如何处理这个问题。

这是我的代码:

def get_asset(year):
  driver = webdriver.Chrome()
  driver.get("http://data.foundationcenter.org.cn/financeInfo_1133.html")
  time.sleep(5)
  driver.find_element_by_link_text(year).click()
  html=driver.page_source
  soup=BeautifulSoup(html,'lxml')
  a = soup.findAll('div',{"id":"content21"})[0]
  driver.close()
  return a

【问题讨论】:

  • 将页面源代码保存为 HTML 文件,然后在浏览器中打开。您会注意到,全年数据都在同一个页面上,并且全部由 JavaScript 和 CSS 控制。因此,当您单击“年份”链接时,只会应用页面 CSS 更改,并且页面源几乎保持不变

标签: python selenium web-crawler


【解决方案1】:

尝试从JavaScript使用click()

def get_asset(year):
    driver = webdriver.Chrome()
    driver.get("http://data.foundationcenter.org.cn/financeInfo_1133.html")
    time.sleep(5)
    link = driver.find_element_by_link_text(year)
    driver.execute_script('arguments[0].click()', link)

这似乎工作正常。

【讨论】:

    【解决方案2】:

    尝试将 soup=BeautifulSoup(html,'lxml') 中的解析器更改为 'html5lib'。 它对我有用。

    【讨论】:

      猜你喜欢
      • 2020-04-27
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2019-03-03
      • 1970-01-01
      相关资源
      最近更新 更多