为了账号安全,请及时绑定邮箱和手机立即绑定

BeautifulSoup 不能使用 if is None then continue 语句来避免

BeautifulSoup 不能使用 if is None then continue 语句来避免

红糖糍粑 2022-06-22 20:38:37
代码如下:import requestsfrom bs4 import BeautifulSoupticker='FAST'url = "https://www.google.com/search?q=nasdaq+%s+earnings+reaction+history&tbs=qdr:m"%(ticker)response = requests.get(url)soup = BeautifulSoup(response.text, "html.parser")# for searchs in soup.find_all('div', {'class':'BNeawe s3v9rd AP7Wnd'}):cache = []for searchs in soup.find_all('div', {'class':'kCrYT'}):    if searchs.find('a')['href'] is None: continue    cache.append(searchs.find('a')['href'])    print(''.join(cache))当 .find('a')['href'] 没有返回结果时,我希望使用 if continue 语句来避免类型错误。然而,它并没有完成这项工作。有人可以指出克服它的方法吗?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

取决于你想用块做什么,如果只有在href之后使用并使用后代组合select器指定具有子元素的父类和属性href


import requests

from bs4 import BeautifulSoup


ticker='FAST'

url = "https://www.google.com/search?q=nasdaq+%s+earnings+reaction+history&tbs=qdr:m"%(ticker)

response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

cache = [searchs['href'] for searchs in soup.select('div.kCrYT [href]')]

print(''.join(cache))


查看完整回答
反对 回复 2022-06-22
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

使用下面的代码从TypeError.


try:

    cache.append(searchs.find('a')['href'])

except TypeError:

    continue


查看完整回答
反对 回复 2022-06-22
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

不要试图在一行中放这么多:


...

for searchs in soup.find_all('div'):

    tag = searchs.find('a')

    #print(searchs)

    if not tag:

        continue

    try:

        h = tag['href']

    except KeyError as e:

        continue

    print(h)


查看完整回答
反对 回复 2022-06-22
  • 3 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信