【发布时间】:2016-03-24 00:10:12
【问题描述】:
我正在尝试从此链接link example: kaggle user ranking no1 中提取排名文本编号。图像更清晰:
我正在使用以下代码:
def get_single_item_data(item_url):
sourceCode = requests.get(item_url)
plainText = sourceCode.text
soup = BeautifulSoup(plainText)
for item_name in soup.findAll('h4',{'data-bind':"text: rankingText"}):
print(item_name.string)
item_url = 'https://www.kaggle.com/titericz'
get_single_item_data(item_url)
结果是None。问题是soup.findAll('h4',{'data-bind':"text: rankingText"}) 输出:
[<h4 data-bind="text: rankingText"></h4>]
但在检查时链接的 html 中是这样的:
<h4 data-bind="text: rankingText">1st</h4>。可以在图片中看到:
很明显,缺少文本。我怎样才能超越它?
所以应该有一种方法可以通过soup 访问。
编辑 2:我尝试使用来自 stackoverflow question 的投票最多的答案,但没有成功。可能是那里的解决方案。
【问题讨论】:
-
当我检查该页面的来源时,它看起来像
<h4 data-bind="text: rankingText"></h4>... 所以结果似乎是正确的。 -
我已经编辑了我的问题。您可以在屏幕截图中看到该值存在。
-
代码中的 url 与链接示例中的不同;这令人困惑。我建议更改代码中的那个以匹配示例,反之亦然。
-
感谢您的观察。已编辑。
标签: python html beautifulsoup html-parsing kaggle