用美丽的汤刮一张桌子

时间:2017-07-18 22:14:21

标签: python web-scraping beautifulsoup

我正试图从这个网站上搜索价格表(购买是,价格和合同):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)。

如何解决此错误以确保代码识别正确的表?

1 个答案:

答案 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')