【问题标题】:Problem parsing page from Wikipedia with BeautifulSoup来自维基百科的问题解析页面与 BeautifulSoup
【发布时间】:2019-01-30 12:59:33
【问题描述】:

我有一个非常简单的测试脚本,用于从 Wikipedia 获取文章并抓取页面中出现的第一段文本(即summary)。

这里是:

from bs4 import BeautifulSoup
import urllib2

url = "https://en.wikipedia.org/wiki/Vicia_faba" 
print url
source = urllib2.urlopen(url)
soup = BeautifulSoup(source, 'lxml')
print soup
summary = soup.find('p').getText()
print summary

解析summary 时我什么也得不到,尽管页面已成功获取并正确传递给BeautifulSoup

这看起来是一个很简单的问题,但我无法继续前进。 BeautifulSoup 充满了诡计,但不幸的是我并不知道其中的许多人!

提前感谢您的任何提示或建议。

【问题讨论】:

    标签: python beautifulsoup wikipedia


    【解决方案1】:

    我在您的代码中更改了一些内容:

    Python 3.x:

    from bs4 import BeautifulSoup
    import urllib.request
    
    
    
    url = "https://en.wikipedia.org/wiki/Vicia_faba"
    print(url)
    
    with urllib.request.urlopen(url) as url:
        source = url.read()
    
    soup = BeautifulSoup(source, 'lxml')
    # print(soup)
    # summary = soup.find('<p>').getText()
    # print(summary)
    
    for para_tag in soup.find_all('p'):
        print (para_tag.text)
    

    输出:

    蚕豆。

    蚕豆,在烹饪意义上也被称为蚕豆,蚕豆 豆或蚕豆是豌豆和豆类中的一种开花植物 豆科。它的来源不确定[1]:160 并且广泛 种植作为供人类食用的作物。它也被用作封面 作物,甜豆,有较小的豆子。品种较小, 喂给马或其他动物的较硬的种子称为田地 豆,tic bean 或 tick bean。马豆,Vicia faba var。 Equina Pers., 是一种公认​​的公认名称。[2]

    有些人患有嗜血症,这是一种溶血反应 蚕豆的消费,与 G6PDD 相关的条件。否则 去掉外层种皮的豆子可以生吃或煮熟。 在幼小的植物中,可以吃外层种皮,在非常幼小的植物中 植物,种荚可以吃。

    蚕豆是一种直立的植物,高 0.5 至 1.8 米(1.6 至 5.9 英尺) 高,茎的横截面呈方形。叶子是 10 长至 25 厘米(3.9 至 9.8 英寸),羽状,有 2-7 个小叶,以及 有明显的白灰色(拉丁语:glaucus)灰绿色。不像 大多数其他野豌豆,叶子没有卷须可以爬过去 其他植物。

    花朵长 1 到 2.5 厘米(0.39 到 0.98 英寸),有五个 花瓣;标准花瓣是白色的,翼花瓣是白色的 黑点(真正的黑色,而不是深紫色或蓝色,如 许多“黑色”着色)[3] 龙骨花瓣是白色的。 深红色的蚕豆也有,最近保存的 从灭绝。 [4]花有强烈的甜味,是 对蜜蜂和其他传粉者具有吸引力。[5]

    继续……

    编辑:

    你需要了解文章的写法,抓取outer-div,然后抓取里面的tag。

    类似:

    container = soup.find("div",attrs={'class': 'mw-parser-output'})
    
    paragraph = container.find("p")
    
    for p in container.find_all("p"):
        if 'Vicia faba, ' in p.text or 'Some people suffer ' in p.text:
            print (p.text)
    

    输出:

    蚕豆,在烹饪意义上也被称为蚕豆,蚕豆 豆或蚕豆是豌豆和豆类中的一种开花植物 豆科。它的来源不确定[1]:160 并且广泛 种植作为供人类食用的作物。它也被用作封面 作物,甜豆,有较小的豆子。品种较小, 喂给马或其他动物的较硬的种子称为田地 豆,tic bean 或 tick bean。马豆,Vicia faba var。 Equina Pers., 是一种公认​​的公认名称。[2]

    有些人患有嗜血症,这是一种溶血反应 蚕豆的消费,与 G6PDD 相关的条件。否则 去掉外层种皮的豆子可以生吃或煮熟。 在幼小的植物中,可以吃外层种皮,在非常幼小的植物中 植物,种荚可以吃。

    【讨论】:

    • 谢谢。但我只需要前两段,如何从 para_tag.text 获取它们?
    • 最好不要在答案中引用这么多的输出,但无论如何都要 +1
    • 您的第一个解决方案工作正常,我已经能够通过仅使用行计数器来获得感兴趣的段落。但是,编辑后的答案并不通用,因为该脚本旨在适用于从 Wikipedia 抓取的任何页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2016-03-27
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2019-01-25
    相关资源
    最近更新 更多