阅读域中的所有页面

时间:2012-05-01 15:18:46

标签: python scraper

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

import urllib,re

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

尽管如此,这对我来说并不起作用。任何想法都表示赞赏。

感谢。 -T

4 个答案:

答案 0 :(得分:3)

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

作为一个脚注,刮刮是一个有点阴暗的事情。无论您采用何种方法,始终要确保您没有违反任何条款和条件。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

CrawlSpider可以帮助您轻松实现抓取。