因为我讨厌通过维基百科文章点击和回读,我正在尝试根据以下算法构建一个工具来创建“扩展的维基百科文章”:
Depth
和Length
。Length
句子并将其包含在原始文章中(例如括号中或以其他方式突出显示)。Depth
,即不超过两个级别。结果将是一篇文章,可以一次性阅读,而不是总是点击来回......
你将如何在Python中构建这样的机制?应该使用哪些库(这些任务是否存在)?有没有有用的教程?
答案 0 :(得分:3)
您可以使用urllib2来请求网址。为了解析htmlpage,你可以找到名为BeautifulSoup的精彩图书馆。您需要考虑的一件事是,在使用您的抓取工具扫描Wikipedia时,您需要添加标头以及您的请求。否则维基百科将无法被抓取。
request = urllib2.Request(page)
添加标题
request.add_header('User-agent', 'Mozilla/5.0 (Linux i686)')
然后加载页面并将其提供给BeautifulSoup
。
soup = BeautifulSoup(response)
text = soup.get_text()
这将为您提供页面中的链接
for url in soup.find_all('a',attrs={'href': re.compile("^http://")}):
link = url['href']
现在关于抓取维基百科的算法,你想要的是Depth Limited Search。伪代码在同一页面中提供,易于遵循。
所述库的其他功能可以用Google搜索并且易于遵循。祝你好运。
答案 1 :(得分:2)
您可能想要尝试Mechanize - 它比urllib和其他内置库更高级别。特别是,您可以像使用浏览器一样轻松浏览,使用follow_link()
和back()
等命令。
要获得您想要的行,请查看几个维基百科页面的来源,以查看摘要在HTML页面中的开始位置 - 从快速浏览,我想您要找到ID为“mw-的div” content-text“并从第一个<p>
元素中获取文本。正如其他人所提到的那样,Beautiful Soup会擅长这一点。
或者,你可以尝试一个与维基百科一起使用的Python库 - 这里有一个列表:http://en.wikipedia.org/wiki/Wikipedia%3aCreating_a_bot#Python,以及some stackoverflow答案中的recommendations other。< / p>
听起来像一个有趣的小项目,祝你好运!
答案 2 :(得分:1)
使用BeautifulSoup或Scrapy来解析html页面。使用urllib或requests获取嵌套页面。您可能需要使用一些正则表达式来按摩或评估提取的链接。
答案 3 :(得分:1)
答案 4 :(得分:1)
使用维基百科python库,它允许您查看页面上的链接,包括“另请参见”部分中的链接,您可以遍历它们并使用库来获取它们上的内容。 https://pypi.python.org/pypi/wikipedia