【问题标题】:Data scraper: the contents of the div tag is empty (??)数据刮板:div标签的内容为空(??)
【发布时间】:2019-06-21 19:15:01
【问题描述】:

我正在抓取网站以获取数字的数据。这个数字每隔一秒就会动态变化,但经过检查,这个数字会显示出来。我只需要捕获该数字,但包含它的 div 包装器,它不返回任何值。我错过了什么? (请放轻松,因为我对 Python 和数据抓取还很陌生)。

我有一些代码可以运行并返回应该包含我想要的数据的 html 片段,但不高兴,div 包装器没有返回任何值。

import requests
from bs4 import BeautifulSoup


r = requests.get('https://deuda-publica-espana.com')

deuda = BeautifulSoup(r.text, 'html.parser')
deuda = deuda.findAll('div', {'id': 'contador_PDEH'})

print(deuda)

我没有收到任何错误,我只是收到 [<div class="contador_xl contador_verde" id="contador_PDEH"></div>] 没有任何价值!

【问题讨论】:

  • 数字是Javascript生成的,你可以试试其他的解决方案,e.g. selenium

标签: python html python-3.x web-scraping beautifulsoup


【解决方案1】:

确实,使用硒很容易。我怀疑有一个运行计数器的 js 脚本提供数字,这就是为什么你无法用你的方法找到它(如 cmets 中所述)

from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\User\Documents\chromedriver.exe')
d.get('https://deuda-publica-espana.com/')
print(d.find_element_by_id('contador_PDEH').text)
d.quit()

【讨论】:

  • 谢谢,我就是这么想的,但我有点困惑,因为经过检查,数字仍然显示,所以我有点奇怪!请在您的回复中添加几个问题: + 通过使用 selenium,我强制代码打开一个 chrome 窗口,对吗?是否可以在后台“无头”进行?这可以在带有 raspbian 和 chromium 的树莓派中运行吗? + 以供将来参考,有没有办法知道在这种情况下何时涉及 java?那会让我头疼不已!无论如何谢谢!
  • 抱歉,没有看到您的回复。 +是的,您可以无头运行它。 +您的浏览器应该为您提供关闭 javascript 的选项(我为此使用 Chrome 创建了一个配置文件)-然后加载页面并查看存在哪些内容/或使用 jquery/postman 之类的东西......可以发出 xhr 请求并检查退货。
猜你喜欢
  • 2019-12-31
  • 2020-05-13
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 2016-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多