2013-03-20 44 views
2

我希望能够获得浏览器在我们尝试打开页面时将执行GET请求的所有URL的列表。例如:如果我们尝试打开cnn.com,则在浏览器递归请求的第一个HTTP响应中有多个URL。如何提取在Python页面呈现期间获取的url列表?

我不想呈现一个页面,但我试图获取页面呈现时请求的所有网址的列表。做一个简单的http响应内容扫描是不够的,因为可能会有下载的css中的图像。无论如何,我可以在Python中做到这一点?

回答

0

您可能需要渲染页面(不一定显示它),以确保您获得了所有资源的完整列表。在类似的情况下,我使用了PyQTQtWebKit。特别是当你开始计算javascript动态包含的资源时,试图用BeautifulSoup递归解析和加载页面并不会奏效。

Ghost.py是一个非常好的客户端,让你开始使用PyQT。另外,请查看QWebView docsQNetworkAccessManager docs

Ghost.py打开页面时返回(页,资源)的元组:

from ghost import Ghost 
ghost = Ghost() 
page, resources = ghost.open('http://my.web.page') 

resources包括所有由原始URL加载HttpResource对象资源。您可以使用resource.url检索已加载资源的URL。

+0

我认为这正是我想要的。我正在执行它。将更新与结果的职位。 – user2188950 2013-03-20 02:18:30

0

我想你必须创建一个你不希望所有已知文件扩展名列表,然后扫描HTTP响应的内容,以检查“如果诺诺列表串不是:”

问题是所有的href都以TLDs,forwardslashes,url-delivered变量等等结束,所以我认为检查你知道你不想要的东西会更容易。