【发布时间】:2017-07-09 18:15:55
【问题描述】:
我正在尝试抓取 this 页面以获取生成数据,以便稍后传递给解析器。
我的问题是该表由多个向另一台服务器发出请求的脚本填充。 Beautiful Soup 抓取页面但返回未执行的 javascript。所以我尝试使用 selenium 在浏览器中打开页面,然后抓取填充的表格。
当我运行我的代码时,Firefox 加载页面然后关闭,但 BS 仍然返回页面而没有填充表格。我尝试在完全加载后使用 Web 控制台检查页面,我可以看到我需要的数据,即一个数据点包含在 class=“r11”的 div 标签中。搜索此标签返回无。
我的想法是,要么 a) 我使用了错误的 selenium,要么 b) 页面的格式被丢掉了,因为它看起来与多个“子文档”嵌套得很深(不确定正确的术语)。
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
arg_therm = ('http://portalweb.cammesa.com/MEMNet1/Pages/Informes%20por%20'
'Categor%C3%ADa/Operativos/VisorReporteSinComDesp_minimal.asp'
'x?hora=0&titulo=Despacho%20Generacion%20Termica&reportPath='
'http://lauzet:5000/MemNet1/ReportingServices/Despacho'
'GeneracionTermica.rdl--0--Despacho+Generaci%c3%b3n+T%c3%a9rmica')
browser = webdriver.Firefox()
browser.get(arg_therm)
html_source = browser.page_source
browser.quit()
soup=BeautifulSoup(html_source,'lxml')
print(soup.prettify())
print(soup.find('div', {"class": "r11"}))
【问题讨论】:
标签: javascript html python-3.x selenium web-scraping