正在解析维基百科页面。我们必须只提取可见文本部分并忽略/删除其他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()
答案 0 :(得分:0)
如果您专注于维基百科,请不要费心去解析文本。幸运的是,维基百科提供了与API一起使用的TextExtracts
extension。此网址:
{
"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
或其他。