解析维基百科页面内容并删除额外内容

时间:2017-03-15 14:59:22

标签: python html css

正在解析维基百科页面。我们必须只提取可见文本部分并忽略/删除其他html标记,URL,对图像,表格,公式和导航组件的引用。下面的代码工作正常,但是,我想知道如何摆脱页面上的内容表以及页面底部的引用部分等表格。

import urllib
from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/Resource-efficient"
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html,"html.parser")

for script in soup(["script", "style","[document]", "head", "title","table"]):
    script.extract() 
text = soup.get_text()

1 个答案:

答案 0 :(得分:0)

如果您专注于维基百科,请不要费心去解析文本。幸运的是,维基百科提供了与API一起使用的TextExtracts extension。此网址:

https://en.wikipedia.org/w/api.php?action=query&titles=Resource-efficient&prop=extracts&explaintext&exsectionformat=plain&redirects 给你回复:

{
    "batchcomplete": "",
    "query": {
        "redirects": [
            {
                "from": "Resource-efficient",
                "to": "Resource efficiency"
            }
        ],
        "pages": {
            "36804997": {
                "pageid": 36804997,
                "ns": 0,
                "title": "Resource efficiency",
                "extract": "Resource efficiency is about maximising the supply of money ...<snip>... External links\nGreen Town: efficient community\nResource efficiency in environmental accounting"
            }
        }
    }
}

您感兴趣的部分位于"extract"

查看URL中的参数。 titles需要一个或多个标题(由|分隔),prop=extracts使用我刚才提到的特殊扩展名来提取纯文本,explaintext确保我们不会#39} ; t在结果中获取HTML标记,exsectionformat=plain用两个换行替换部分,redirects自动解析重定向(它不是强制性的,但是有一个很好的选择)。如果要使用其他返回格式,请使用参数format=xml或其他。