2012-09-28 63 views
3
获取文本

因为我讨厌点击来回通过维基百科的文章阅读中,我想建立一个工具来创建根据以下算法“扩大维基百科的文章”:解析维基百科递归和包括链接

  • 创建两个变量:DepthLength。每当有另一文章的链接获取第一Length句子,包括它原来的文章中(例如在方括号或以其他方式高亮):
  • 通过这篇文章,设置维基百科文章作为种子页面
  • 解析。
  • 递归执行此操作直到某个Depth,即不比两个级别更深。

其结果将是,可能会一气呵成,不总是以点击和阅读的文章来回回......

你将如何建立在Python这样的机制?应该使用哪些库(有没有这样的任务)?有没有有用的教程?

回答

3

可以使用urllib2请求的URL。为了解析这个html页面,你有一个很棒的库,叫做BeautifulSoup。您需要考虑的一件事是,在使用您的抓取工具扫描维基百科时,您需要在请求中添加一个标题。否则维基百科将不愿意被抓取。

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。伪代码在同一页面中提供,易于追踪。

并且所述库的其他功能可以被谷歌搜索并易于追踪。祝你好运。

1

使用BeautifulSoupScrapy来解析html页面。使用urllibrequests获取嵌套页面。您可能需要使用一些正则表达式来按摩或评估提取的链接。

1

你可以解析html,或者你可以解析寻找[[Link]]的原始版本。 无论哪种方式,你应该跟一起来看看:

urllibrequests

2

您可能想尝试Mechanize - 这比urllib和其他内置库更高一些。特别是,使用follow_link()back()等命令就像浏览器一样轻松导航。

为了找到你想要的行,看看几个维基百科页面的来源,以查看摘要在HTML页面中的起始位置 - 从快速浏览,我想你想找到id为“mw -content-text“并从第一个<p>元素中获取文本。正如其他人所说,Beautiful Soup将是擅长的。

或者,你可以尝试与维基百科的工作Python库之一 - 这里有一个列表:http://en.wikipedia.org/wiki/Wikipedia%3aCreating_a_bot#Python,并somerecommendationsother计算器的答案。

听起来像一个有趣的小项目,祝你好运!