【问题标题】:Search through identical links and return first match. - Python BS4搜索相同的链接并返回第一个匹配项。 - 蟒蛇BS4
【发布时间】:2020-05-31 22:09:24
【问题描述】:

我正在尝试收集输入,我希望打印第一个链接匹配项。我似乎无法弄清楚,所以我在这里。任何想法都会非常感谢

import bs4
from urllib.request import urlopen 
from bs4 import BeautifulSoup 
import re
import requests


result = requests.get("https://naruto-arena.net/characters-and-skills")
src = result.content
soup = BeautifulSoup(src, 'lxml')

links = soup.find_all("a", { "class" : "subjlink"})


name = input("Enter name: ")

for link in links:
href = (link.attrs['href'])
if name.lower() in href[30:].replace("-", "").lower():
    print(href)

结果:

输入姓名:火影忍者

https://naruto-arena.net/char/Uzumaki-Naruto

https://naruto-arena.net/char/Kyuubi-Naruto

https://naruto-arena.net/char/Uzumaki-Naruto-(S)

https://naruto-arena.net/char/Sennin-Naruto-(S)

https://naruto-arena.net/char/Four-Tail-Kyuubi-Naruto-(S)

https://naruto-arena.net/char/Kyuubi-Naruto-(S)

想要的结果:

https://naruto-arena.net/char/Uzumaki-Naruto

【问题讨论】:

    标签: python-3.x beautifulsoup request python-re


    【解决方案1】:

    您的所有链接都匹配,所有链接末尾都带有“火影忍者”。如果您只想打印一个,则需要一个 break 语句。您似乎也错误地缩进了您的代码,因为紧接在您的 for 循环之后的行没有缩进。这是应该起作用的东西:

    name = input("Enter name: ")
    for link in links:
        href = (link.attrs['href'])
        if name.lower() in href[30:].replace("-", "").lower():
            print(href)
            break
    

    希望对您有所帮助,祝编程愉快!

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 2015-02-24
      • 2013-07-29
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2022-01-05
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多