2015-11-03 46 views
1

我想弄清楚为什么我的网页刮擦停止了一半?美丽的汤 - 为什么我的刮刀停在桌子的中途?

我的代码:

import requests,re 
from bs4 import BeautifulSoup 

url ="http://odds.aussportsbetting.com/betting?competitionid=15" 
r = requests.get(url) 
soup = BeautifulSoup(r.content,'html') 

#get market 
m_data = soup.find_all('div', {'class': 'tabContent'}) 
for items in m_data: 
    all_rows = items.findAll('tr') 

    for data in all_rows: 
      game = data.findAll('a', {'title': 'Click To Compare Odds'}) 
      market = data.findAll('a', {'title': 'Click To Compare Odds Sorted By Best Bookmaker Odds'}) 

      for g_row in game:    
       text = ''.join(g_row.findAll(text=True)) 
       g_data = text.strip() 

       print g_data 

      for g_row in market: 
       text = ''.join(g_row.findAll(text=True)) 
       g_data = text.strip() 

       print g_data  

我的输出:

Cleveland @ Cincinnati 
102.93 
Miami @ Buffalo 
102.27 
Green Bay @ Carolina 
123.42 
St Louis @ Minnesota 
102.92 
Washington @ New England 
101.85 
Tennessee @ New Orleans 
185.93 
Jacksonville @ New York Jets 
189.21 
Oakland @ Pittsburgh 
102.51 
Atlanta @ San Francisco 
101.75 

如果在这个环节Click here告示,你会看到有一个需要被停止刮但更大量的数据。你能帮助确定原因吗?

+1

我无法访问该网站,数据如何加载?如果网站使用AJAX XMLHttpRequest,那么当您正在搜索网站时,数据可能还不存在。 – Jaco

+1

您是否尝试过使用不同的解析器? 'lxml'或'html.parser' – Jkdc

+0

嗨@Jkdc,你是否想写这个答案。你是非常正确的,我试图将解析器改为html.parser,它现在可以工作。谢谢 – Jimmyn

回答

1

您可能想要更改解析器。

内置于一体,html,可以很容易失败,使用html.parserlxml代替:

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

一些更多的信息,请参见BeautifulSoup Docs有关建议的解析器

+1

'lxml'是默认的,如果你有它安装。 – roippi