2

我正在使用 urllib 库来获取页面。通常我有顶级域名,我希望从该域的每个页面中提取一些信息。因此,如果我有 xyz.com,我希望我的代码从 xyz.com/about 等获取数据。这就是我正在使用的:

import urllib,re

htmlFile = urllib.urlopen("http://www.xyz.com/"+r"(.*)")
html = htmlFile.read()
...............

不过,这对我没有用。任何想法表示赞赏。

谢谢。-T

4

4 回答 4

3

我不知道你为什么希望domain.com/(.*)工作。您需要拥有该域中所有页面(动态或静态)的列表。你的 python 程序不能自动知道这一点。您必须通过以下链接或查看网站的站点地图从其他地方获得这些知识。

作为一个脚注,抓取是一个有点阴暗的业务。无论您采用何种方法,请始终确保您没有违反任何条款和条件。

于 2012-05-01T15:22:39.223 回答
1

您正在尝试在 Web 服务器上使用正则表达式。事实证明,Web 服务器实际上并不支持这种格式,所以它失败了。

要做你想做的事,你需要实现一个蜘蛛。一个程序,它将下载一个页面,找到其中的所有链接,并决定要遵循哪些链接。然后,下载这些页面中的每一个,然后重复。

一些需要注意的事情 - 循环,最终指向同一页面的多个链接,链接到域之外,以及被网络服务器禁止向其发送 1000 多个请求的垃圾邮件。

于 2012-05-01T15:22:17.513 回答
0

Scrapy 内置了这个功能。没有递归获取链接。它会异步自动为您处理所有繁重的工作。只需指定您的域和搜索词以及您希望它在页面中搜索的深度。即整个站点。 http://doc.scrapy.org/en/latest/index.html

于 2012-05-01T15:47:01.097 回答
0

除了@zigdon 的回答,我建议你看看scrapy框架。

CrawlSpider将帮助您轻松实现爬网。

于 2012-05-01T15:47:28.970 回答