使用Beautiful Soup刮取数据,在不同情况下格式不同

时间:2017-07-13 21:31:27

标签: python screen-scraping

我正试图从网上搜集州长选举数据,而我正在努力解决其中的一部分问题。因此,在这两个案例中你可以看到,有两个候选人(民主或共和党)或3个候选人(民主党,共和党,独立党)。

我编写了以下代码来抓取数据。这适用于2候选情况,但我不确定如何使它适用于这两种情况。

这是我的代码:

html = requests.get(url).text

soup = BeautifulSoup(html, 'html.parser')

#Scrape the percentage Numbers
table = soup.find_all('table')[0]
table_row = table.find_all('tr')[1]
table_data = table_row.find_all('td')[3:5]

案例1:

enter image description here

案例2:

enter image description here

1 个答案:

答案 0 :(得分:1)

html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
table = soup.find_all('table')[0]
table_row = table.find_all('tr')[1]
table_data = table_row.find_all('td')
if table_data[-1].class == 'spread': #checking whether the last td has class spread
    table_data = table_data[3:5]
else: 
    table_data = table_data[3:6]