【问题标题】:Beautiful Soup - extracting after the divBeautiful Soup - 在 div 之后提取
【发布时间】:2019-09-01 13:44:16
【问题描述】:
from bs4 import BeautifulSoup as Soup,Tag
import requests

url=r"https://en.wikipedia.org/wiki/Lists_of_tourist_attractions"

r = requests.get(url)
soup = Soup(r.content,"html.parser" )

for link in soup.find_all('a', href=True):
    print (link['href'])

for ul in soup.findAll('div'):
    print(ul.text)
    for li in ul.findAll('li'):
        print(li.text)

上面是一个工作代码。这可以使用任何维基百科页面。 问题是: 我想得到 href 和标题彼此相邻。我无法得到这个。

在第二个 for 循环中,它将所有内容作为 div 并打印在一行中。

如何打印标题和 href 互相辅助(li 内容)

【问题讨论】:

  • 您能更具体地说明您想要什么吗? how can I print title and href adjutant to each other (li contents)这句话我看不懂
  • 您是否只想将寺庙列表打印出来,旁边有它们的网址?
  • wiki中的
  • 有很多内容。它有标题和href。我正在考虑打印它们。
  • 现在用我的程序我可以打印所有的href,所有的标题,但不能同时调整
  • 是的,因为您将它们放在单独的循环中。你使用的逻辑太简单了。如果我是你,我至少会使用数组,并在抓取完成后打印数组。或者创建一个 txt 文件或其他东西并保持它的整洁
  • 标签: python beautifulsoup


    【解决方案1】:

    也许这不是您想要的,但您可以试试这个。我对你的两个for 循环做了一个小修改:

    for lnk in soup.findAll('a', href=True):
        title = (lnk.text)
        link = (lnk['href'])
        if title != '':
            print ("Title: {}, Link: https://en.wikipedia.org{}".format(title, link))
    

    【讨论】:

    • 这行不通...它只提供hrefs和tite
    • 如果不是您要提取的 href 和 title,那么您的声明“我正在尝试将 href 和 title 放在一起。我无法得到这个”是什么意思。
    • 我的意思是它不打印标题,而只是打印标题和href
    • 好的,我做了进一步的修改
    【解决方案2】:

    试试这个:

    for link in soup.find_all('a', href=True):
        print (link.get('href') +'->' + link.get('title'))
    

    顺便说一句,我建议使用wikipedia API 或special:export 功能来访问数据。

    https://www.mediawiki.org/wiki/API:Main_page
    https://en.wikipedia.org/wiki/Special:Export

    【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签