为什么bs4找不到href属性?

时间:2020-10-01 07:21:50

标签: python html beautifulsoup href

所以我正在学习使用atbwp,现在正在做一个程序,在该程序中打开网站上的前5个搜索结果。 一切都会进行,直到我必须获取每个热门结果的href并打开它为止。我收到此错误:

Traceback (most recent call last):
  File "C:\Users\Asus\Desktop\pyhton\projects\emagSEARCH.py", line 33, in <module>
    webbrowser.open(url)
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python38-32\lib\webbrowser.py", line 86, in open
    if browser.open(url, new, autoraise):
  File "C:\Users\Asus\AppData\Local\Programs\Python\Python38-32\lib\webbrowser.py", line 603, in open
    os.startfile(url)
TypeError: startfile: filepath should be string, bytes or os.PathLike, not NoneType

这是html的外观:

<a href="https://comenzi.farmaciatei.ro/ingrijire-personala/ingrijire-corp-si-fata/tratamente-/the-no-brainer-set-the-ordinary-deciem-p344003"> The No-Brainer Set The Ordinary, Deciem</a>

这是我的代码的一部分,由于某些原因无法正常工作..

Soup=bs4.BeautifulSoup(res.text,'html.parser')
results= Soup.select('.item-title')

numberTabs=min(5,len(results))
print('Opening top '+str(numberTabs)+' top results...')

for i in range(numberTabs):
    url=results[i].get('href')
    webbrowser.open(url)

它执行应做的事情,直到for循环为止。它看起来很像书中的示例程序,所以我不明白为什么它不起作用。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

如果您想在href标签下提取a,请使用以下方法:

html = '<a href="https://comenzi.farmaciatei.ro/ingrijire-personala/ingrijire-corp-si-fata/tratamente-/the-no-brainer-set-the-ordinary-deciem-p344003"> The No-Brainer Set The Ordinary, Deciem</a>'

Soup=bs4.BeautifulSoup(html,'html.parser')

url = Soup.find('a')['href']

print(url)

webbrowser.open(url)

输出:

https://comenzi.farmaciatei.ro/ingrijire-personala/ingrijire-corp-si-fata/tratamente-/the-no-brainer-set-the-ordinary-deciem-p344003

U可以对所有a标签执行相同操作,以获取所有hrefs