【问题标题】:BeautifulSoup, findAll after findAll?BeautifulSoup,findAll 在 findAll 之后?
【发布时间】:2017-01-21 13:50:19
【问题描述】:

我对 Python 很陌生,主要需要它来从网站获取信息。 在这里,我尝试从网站底部获取短标题,但无法完全获取。

from bfs4 import BeautifulSoup
import requests

url = "http://some-website"
r = requests.get(url)
soup = BeautifulSoup(r.content, "html.parser")

nachrichten = soup.findAll('ul', {'class':'list'})

现在我需要另一个 findAll 来从 var "nachrichten" 中获取所有链接/a,但我该怎么做呢?

【问题讨论】:

  • 我认为没有 bfs4。我从来没有放过它。

标签: python beautifulsoup python-requests


【解决方案1】:

如果你想要一个列表中的所有链接,请使用 css 选择器

anchors = soup.select('ul.list a')

如果您想要单独的列表:

anchors = [ ul.find_all(a) for a in soup.find_all('ul', {'class':'list'})]

此外,如果您想要 href,您可以确保只找到具有 href 属性的锚点并提取:

hrefs = [a["href"] for a in soup.select('ul.list a[href]')]

使用find_all 设置href=Trueul.find_all(a, href=True)

【讨论】:

    【解决方案2】:
    from bs4 import BeautifulSoup
    import requests
    url = "http://www.n-tv.de/ticker/"
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    nachrichten = soup.findAll('ul', {'class':'list'})
    links = []
    for ul in nachrichten:
        links.extend(ul.findAll('a'))
    print len(links)
    

    希望这能解决您的问题,我认为导入的是 bs4。我从不群bfs4

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 2013-06-12
      • 2017-08-03
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多