来自维基百科的BeautifulSoup问题解析页面

时间:2019-01-30 12:59:34

标签: python beautifulsoup wikipedia

我有一个非常简单的测试脚本,用于从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到处都是花样,但不幸的是,我不了解其中的许多花招!

在此先感谢您的提示或建议。

1 个答案:

答案 0 :(得分:2)

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

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)

输出:

  

Faba sativa Moench。

     

蚕豆,在烹饪上也被称为蚕豆,蚕豆   豆或蚕豆是豌豆和豆中的一种开花植物   豆科。它起源不确定[1]:160,广泛   作为人类食用的作物而种植。也可以用作封面   农作物,灯笼豆,其中的豆较小。品种较小   喂给马或其他动物的较硬种子称为田地   豆,提克豆或扁豆。蚕豆,蚕豆蚕豆马(。)   是公认的名称。[2]

     

有些人患有favism,这是对   食用蚕豆,这与G6PDD有关。否则   豆子,除去种皮,可以生吃或煮熟。   在幼小的植物中,可以吃外层种皮,而在幼小的时候   植物,可以吃种子荚。

     

蚕豆(Vicia faba)是直立的植物,长0.5至1.8米(1.6至5.9英尺)   高,茎的横截面为正方形。叶子是10   到25厘米(3.9到9.8英寸)长,羽状具2–7张小叶,并且   上色为鲜明的白色(拉丁文:青绿色)灰绿色。不像   大多数其他水獭,叶子没有卷须爬过   其他植被。

     

花长1至2.5厘米(0.39至0.98英寸),其中有5朵   花瓣标准花瓣为白色,翼形花瓣为白色,   黑点(真黑色,不是深紫色或蓝色)   许多“黑色”着色)[3],龙骨花瓣是白色的。   也有深红色的蚕豆,最近被保存了   灭绝。[4]花有强烈的甜味,是   对蜜蜂和其他授粉媒介有吸引力。[5]

继续...

编辑:

您需要了解文章的编写方式,抓住外部div,然后需要抓住其中的标签。

类似的东西:

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,广泛   作为人类食用的作物而种植。也可以用作封面   农作物,灯笼豆,其中的豆较小。品种较小   喂给马或其他动物的较硬种子称为田地   豆,提克豆或扁豆。蚕豆,蚕豆蚕豆马(。)   是公认的名称。[2]

     

有些人患有favism,这是对   食用蚕豆,这与G6PDD有关。否则   豆子,除去种皮,可以生吃或煮熟。   在幼小的植物中,可以吃外层种皮,而在幼小的时候   植物,可以吃种子荚。