我正试图从这个网站上搜索价格表(购买是,价格和合同):https://www.predictit.org/Contract/7069/Will-the-Senate-pass-the-Better-Care-Reconciliation-Act-by-July-31#prices。
这是我的(显然是非常初步的)代码,现在只是为了找到表格而构建:
from bs4 import BeautifulSoup
import requests
from lxml import html
import json, re
url = "https://www.predictit.org/Contract/7069/Will-the-Senate-pass-the-Better-Care-Reconciliation-Act-by-July-31#prices"
ret = requests.get(url).text
soup = BeautifulSoup(ret, "lxml")
try:
table = soup.find('table')
print table
except AttributeError as e:
print 'No tables found, exiting'
代码查找并解析表;但是,它是错误的(不同选项卡上的数据表https://www.predictit.org/Contract/7069/Will-the-Senate-pass-the-Better-Care-Reconciliation-Act-by-July-31#data)。
如何解决此错误以确保代码识别正确的表?
答案 0 :(得分:1)
如评论中提到的@downshift,该表是使用xhr请求生成的js
因此,您可以使用Selenium
或直接请求网站的API。
使用第二个选项:
url = "https://www.predictit.org/PrivateData/GetPriceListAjax?contractId=7069"
ret = requests.get(url).text
soup = BeautifulSoup(ret, "lxml")
table = soup.find('table')