beautifulsoup 相关问题

Beautiful Soup是一个用于解析HTML / XML的Python包。此软件包的最新版本是版本4,导入为bs4。

无法使用列表理解创建类似的列标题,就像 pandas 对特定表所做的那样

我正在尝试使用列表理解从网页中抓取表格的标题。我面临的问题是,当我使用 pandas 创建相同的标题时,外观有很大不同。只是...

回答 1 投票 0

我如何使用美丽的汤从篮球参考比赛结果中抓取表格

我正在尝试使用Python中的Beautiful soup从篮球参考中抓取并解析结果表。 这是我正在尝试抓取的页面:https://www.basketball-reference.com/boxscores/

回答 1 投票 0

BeautifulSoup:只要进入标签内部,无论有多少个封闭标签

我正在尝试使用 BeautifulSoup 从网页中的 元素中抓取所有内部 html。有内部标签,但我不在乎,我只想获取内部文本。 例如,... 我正在尝试使用 BeautifulSoup 从网页中的 <p> 元素中抓取所有内部 html。有内部标签,但我不在乎,我只想获取内部文本。 例如,对于: <p>Red</p> <p><i>Blue</i></p> <p>Yellow</p> <p>Light <b>green</b></p> 如何提取: Red Blue Yellow Light green .string和.contents[0]都不能满足我的需要。 .extract()也没有,因为我不想提前指定内部标签 - 我想处理任何可能发生的情况。 BeautifulSoup 中有“只获取可见 HTML”类型的方法吗? ----更新------ 根据建议,尝试: soup = BeautifulSoup(open("test.html")) p_tags = soup.findAll('p',text=True) for i, p_tag in enumerate(p_tags): print str(i) + p_tag 但这并没有帮助 - 它打印出: 0Red 1 2Blue 3 4Yellow 5 6Light 7green 8 简短回答:soup.findAll(text=True) 这个问题已经在 StackOverflow 和 BeautifulSoup 文档 中得到了解答。 更新: 澄清一下,一段工作代码: >>> txt = """\ ... <p>Red</p> ... <p><i>Blue</i></p> ... <p>Yellow</p> ... <p>Light <b>green</b></p> ... """ >>> import BeautifulSoup >>> BeautifulSoup.__version__ '3.0.7a' >>> soup = BeautifulSoup.BeautifulSoup(txt) >>> for node in soup.findAll('p'): ... print ''.join(node.findAll(text=True)) Red Blue Yellow Light green 接受的答案很棒,但现在已经有 6 年历史了,所以这是该答案当前的 Beautiful Soup 4 版本: >>> txt = """\ <p>Red</p> <p><i>Blue</i></p> <p>Yellow</p> <p>Light <b>green</b></p> """ >>> from bs4 import BeautifulSoup, __version__ >>> __version__ '4.5.1' >>> soup = BeautifulSoup(txt, "html.parser") >>> print("".join(soup.strings)) Red Blue Yellow Light green 我偶然发现了这个同样的问题,并想分享这个解决方案的 2019 版本。也许它可以帮助某人。 # importing the modules from bs4 import BeautifulSoup from urllib.request import urlopen # setting up your BeautifulSoup Object webpage = urlopen("https://insertyourwebpage.com") soup = BeautifulSoup( webpage.read(), features="lxml") p_tags = soup.find_all('p') for each in p_tags: print (str(each.get_text())) 请注意,我们首先逐一打印数组内容,然后调用 get_text() 方法从文本中剥离标签,这样我们就只打印出文本。 还有: 在 bs4 中使用更新的 'find_all()' 比旧的 findAll() 更好 urllib2 被 urllib.request 和 urllib.error 取代,参见这里 现在你的输出应该是: 红色 蓝色 黄色 光 希望这可以帮助寻找更新解决方案的人。 通常从网站上抓取的数据都会包含标签。要避免标签并仅显示文本内容,可以使用文本属性。 例如, from BeautifulSoup import BeautifulSoup import urllib2 url = urllib2.urlopen("https://www.python.org") content = url.read() soup = BeautifulSoup(content) title = soup.findAll("title") paragraphs = soup.findAll("p") print paragraphs[1] //Second paragraph with tags print paragraphs[1].text //Second paragraph without tags 在此示例中,我从 python 站点收集所有段落并显示带标签和不带标签的内容。 首先,使用 str 将 html 转换为字符串。然后,在您的程序中使用以下代码: import re x = str(soup.find_all('p')) content = str(re.sub("<.*?>", "", x)) 这称为regex。这将删除两个 html 标签之间的任何内容(包括标签)。 我认为有一种更简单的方法来获取所有内部文本 请参阅此处的文档。 from bs4 import BeautifulSoup soup = BeautifulSoup(""" <p>Red</p> <p><i>Blue</i></p> <p>Yellow</p> <p>Light <b>green</b></p> """, "html.parser") print(list(map(lambda x: x.get_text(), soup.find_all("p"))))

回答 6 投票 0

如何使用selenium从网页中抓取数据

我想从此链接中抓取所有参展商名称和信息:https://asiatechxsg.com/exhibitors/ 到 csv 文件中。 我这样写过: html = requests.get('https://asiatechxsg.com/

回答 2 投票 0

如何从具有相同类的多个元素中抓取数据?

我正在尝试从电子竞技统计网站(vlr.gg)中抓取一些数据。我决定使用 BeatifulSoup,但现在从相同的类名中抓取数据时遇到一些问题。 box5=soup.find_all("div&

回答 1 投票 0

如何从网页中抓取参展商名称和描述

我想从此链接中抓取所有参展商名称和信息:https://asiatechxsg.com/exhibitors/ 到 csv 文件中。 我这样写过: html = requests.get('https://asiatechxsg.com/

回答 1 投票 0

Python-BeautifulSoup-如何从多个同名类中导出数据

box5=soup.find_all("div",class_="match-header-vs-score") 对于方框 5 中的 p: matchtdetails=p.find("div",class_="match-header-vs-note").get_text(strip=True)

回答 1 投票 0

如何从维基百科的摘要部分/链接列表中抓取链接?

我正在尝试使用Python从维基百科上的“拜仁城镇和Gemeinden列表”中抓取大型维基百科页面的所有链接。问题是我不知道如何

回答 2 投票 0

从维基百科页面的摘要部分获取链接:使用Python从此维基页面提取所有链接

我正在尝试使用Python从维基百科上的“拜仁城镇和Gemeinden列表”中抓取大型维基百科页面的所有链接。问题是我不知道如何

回答 1 投票 0

如何从嵌套div中抓取图像和描述元数据?

我尝试从欧洲航天局图像库网站提取图像和描述元数据: https://www.esa.int/ESA_Multimedia/Sets/Earth_from_Space_image_collection/(result_type)/i...

回答 1 投票 0

如何使用 beautifulsoup python 提取href

下面的代码可以提取网站上的所有链接, 从 bs4 导入 BeautifulSoup 导入请求 r=requests.get("https://www.drishtiias.com/current-affairs-news-analysis-editorials") 汤=

回答 1 投票 0

如何专门自动抓取 wikipedia-info 框并使用 python 打印更多(其他)wiki 页面的数据?

如何专门自动抓取维基百科信息框并使用Python打印任何维基页面的数据?我的任务是自动打印维基百科信息框数据。这就是说我发现...

回答 1 投票 0

如何从不同长度的HTML表格中抓取准确的字段?

我正在尝试创建一个脚本来根据标题从表中抓取一些字段。问题是所有表及其表头的长度并不相同。 这是 HTML

回答 1 投票 0

无法修改脚本的逻辑以从不同长度的表中抓取准确的字段

我正在尝试创建一个脚本来根据标题从表中抓取一些字段。问题是所有表及其表头的长度并不相同。这是 HTML

回答 1 投票 0

我如何从 geeksforgeeks 上抓取我所在大学的排行榜?

我一直在尝试通过网络抓取一个名为 GeeksForGeeks 的编码平台的排行榜。 给定的代码应该工作得很好。但这根本不起作用。 导入请求 从 BS4 导入

回答 1 投票 0

属性错误:“DataFrame”对象在变量 netflix_data 中没有属性“append”

当我尝试使用 BeautifulSoup 学习网页抓取时,在使用 .append() 函数将数据插入字典(netflix_data)时遇到一些问题 这是我的整个源代码 进口潘...

回答 1 投票 0

为什么我无法列出我传递的参数对应的所有<li>?

我正在抓取 HTML 页面,我想将所有包含字符串“is”的 存储在列表中。然而,代码只存储前两个,我不知道我到底是什么 我正在抓取 HTML 页面,我想将所有包含字符串“is”的 <li> 存储在列表中。然而,代码只存储前两个,我不知道我到底做错了什么 我正在使用 BeautifulSoup 进行抓取 <ul class="fun-facts"> <li>Owned my dream car in high school <a href="#footer"><sup>1</sup></a></li> <li>Middle name is Ronald</li> <li>Never had been on a plane until college</li> <li>Dunkin Donuts coffee is better than Starbucks</li> <li>A favorite book series of mine is <i>Ender's Game</i></li> <li>Current video game of choice is <i>Rocket League</i></li> <li>The band that I've seen the most times live is the <i>Zac Brown Band</i></li> </ul> 我的代码 import re fun_facts = webpage.find('ul', attrs={'class', 'fun-facts'}) fun_facts_with_is = fun_facts.find_all('li', string=re.compile("is")) fun_facts_with_is 结果返回 [<li>Middle name is Ronald</li>, <li>Dunkin Donuts coffee is better than Starbucks</li>] 我正在寻找的结果: ['Middle name is Ronald', 'Dunkin Donuts coffee is better than Starbucks', "A favorite book series of mine is Ender's Game", 'Current video game of choice is Rocket League', "The band that I've seen the most times live is the Zac Brown Band"] 该行为在 beautifulsoup 文档中进行了说明: 如果一个标签包含多个内容,那么就不清楚 .string 应该指代什么,所以 .string 被定义为 None 在您的情况下,thing指的是<li>内的其他标签。 要获得结果,您可以修改代码: import re from bs4 import BeautifulSoup html_source = """\ <ul class="fun-facts"> <li>Owned my dream car in high school <a href="#footer"><sup>1</sup></a></li> <li>Middle name is Ronald</li> <li>Never had been on a plane until college</li> <li>Dunkin Donuts coffee is better than Starbucks</li> <li>A favorite book series of mine is <i>Ender's Game</i></li> <li>Current video game of choice is <i>Rocket League</i></li> <li>The band that I've seen the most times live is the <i>Zac Brown Band</i></li> </ul>""" webpage = BeautifulSoup(html_source, "html.parser") fun_facts = webpage.find("ul", attrs={"class", "fun-facts"}) out = [] for li in fun_facts.find_all("li"): if "is" in li.text: out.append(li.text) print(out) 打印: [ "Middle name is Ronald", "Dunkin Donuts coffee is better than Starbucks", "A favorite book series of mine is Ender's Game", "Current video game of choice is Rocket League", "The band that I've seen the most times live is the Zac Brown Band", ]

回答 1 投票 0

解析讨论论坛只能让我获得第一个用户评论,但不能获得其他用户回复

有人可以帮我一下吗,我似乎无法弄清楚这个问题。 我有一个 url 文件列表,如下所示: https://community.appian.com/discussions/f/administration/14/integrate-token-d...

回答 1 投票 0

抓取MDPI提取邮件地址

我有以下代码,应该从 MDPI(医学数据库)打开一个网页,并提取 20 篇文章的列表。然后,转到每篇文章的 URL,并提取找到的第一封电子邮件...

回答 1 投票 0

dict.has_key(somekey) 与 dict 中的 somekey 的作用不同

我最近在玩Beautifulsoup时遇到了一个奇怪的Python字典问题。我的代码看起来像这样。 导入 urllib2 从 BeautifulSoup 导入 BeautifulSoup 响应 = urllib2.

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.