我正试图从巴西政府那里抓取一个网站。 (http://www.tesouro.gov.br/resultados-dos-leiloes)
我要获取的信息只是下表,其中包含“ Comunicados”,“ Resultados da Semana”和以下链接。
我的问题是,该网站的行为方式与我一直在努力的方式不同。
通常,信息在元素部分,因此我可以直接通过请求将其抓取,或者在更复杂的站点中,我应该从Chrome Inspect中查找Network和XHR上的API。
在这种情况下,没有一个对我有用。
有人知道我怎么得到这张桌子吗?我认为这可能很简单(我希望如此!大声笑)
我认为这将无济于事,因为我的代码根本无法工作,但这是我的代码:
import requests
from bs4 import BeautifulSoup as bs
url = "http://www.tesouro.gov.br/resultados-dos-leiloes"
data = requests.get(url)
bsobj = bs(data.content, "lxml") #just a small part of the site is shown.
ps:MacOS High Sierra / Python 3.6-在Jupyter Lab上工作
答案 0 :(得分:1)
此表中可能装有JavaScript,这就是为什么请求无法正常工作的原因。 您需要使用类似Selenium之类的信息来提取信息:
示例:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.tesouro.gov.br/resultados-dos-leiloes")
bsobj = bs(driver.page_source, "lxml")
driver.close()
ps。 您还可以使用phantomJS
这样的无头浏览器驱动程序查看了该站点的html之后,我发现他们正在使用iFrame加载此数据,这意味着除非您提供iframe源URL,否则硒将无法工作。
因此,您所需的就是该iframe源网址,您也可以通过请求获取该数据
import requests
res = requests.get('http://sisweb.tesouro.gov.br/apex/f?p=2501:6')
bsobj = bs(res.content, "lxml")
print(bsobj)