我正在尝试抓一个网页。在某些情况下,所有数据都存在,但是当用户符合资格时它返回400错误。我试图找出如何判断文本是否为空。
这是HTML:
https://hastebin.com/abotejaquy.scala - 正如您所看到的,大多数标签都包含文字(" Silver IV")但其中两个标签没有任何内容。
这是我正在尝试的代码:
https://hastebin.com/xubibivara.py
它返回:
Silver III
Silver II
Silver IV
(符合资格的空间)
Silver I
Silver III
Silver III
(符合资格的空间)
Silver V
Silver IV
- 文字显示但排位赛没有。
由于
答案 0 :(得分:0)
我不确定您的特定问题,但是代码的初稿的经验法则 - 如果某些事情引发异常,您可以处理异常。对刮刀来说尤其如此。
看看下面的代码:
来自bs4 import BeautifulSoup 导入请求
request = requests.get(url)
soup = BeautifulSoup(request.content, 'html.parser')
all_tags = list(soup.find_all('div', class_='profile-ranking-rank'))
kitname = list(soup.find_all('div', class_="profile-ranking-title"))
for tag in all_tags:
try:
print (tag.text)
except Exception:
print("Qualifying")
<强>更新强>
我无法重现异常,但看起来某些跨距中有空字符串。 BS4处理它的方式是将.text
作为空字符串,而不是None,所以在这种情况下你应该检查字符串长度:
request = requests.get(url)
soup = BeautifulSoup(request.content, 'html.parser')
all_tags = list(soup.find_all('div', class_='profile-ranking-rank'))
kitname = list(soup.find_all('div', class_="profile-ranking-title"))
for tag in all_tags:
if len(tag.text) > 0:
print (tag.text)
else:
print("Qualifying")