Beautiful Soup - 在 div 之后提取
Posted
技术标签:
【中文标题】Beautiful Soup - 在 div 之后提取【英文标题】:Beautiful Soup - extracting after the 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 文件或其他东西并保持它的整洁
【参考方案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
【讨论】:
Thankq pankay 它可以工作,但为什么 url 不完整。它不见了en.wikipedia.org/wiki以上是关于Beautiful Soup - 在 div 之后提取的主要内容,如果未能解决你的问题,请参考以下文章