【发布时间】:2013-10-06 14:27:45
【问题描述】:
我正在尝试通过阻止下载 CSS/其他资源来加速 Python 中的 Selenium/PhantomJS webscraper。我只需要下载 img src 和 alt 标签。我找到了这段代码:
page.onResourceRequested = function(requestData, request) {
if ((/http:\/\/.+?\.css/gi).test(requestData['url']) || requestData['Content-Type'] == 'text/css') {
console.log('The url of the request is matching. Aborting: ' + requestData['url']);
request.abort();
}
};
通过:How can I control PhantomJS to skip download some kind of resource?
如何/在哪里可以在 Python 驱动的 Selenium 中实现此代码?或者,还有其他更好的方法来阻止 CSS/其他资源下载吗?
注意:我已经找到了如何通过编辑 service_args 变量来防止图像下载:
How do I set a proxy for phantomjs/ghostdriver in python webdriver?
和
PhantomJS 1.8 with Selenium on python. How to block images?
但是 service_args 无法帮助我处理 CSS 等资源。谢谢!
【问题讨论】:
-
如果您只需要 HTML 并从页面中选择元素,Selenium/PhantomJS 是最佳选择吗?您是否考虑过使用python-requests?
-
@brechin,这是个好主意,谢谢!不幸的是,我不认为 python-requests 可以获得 javascript 注入的内容。例如,请参阅此页面上的主图像:everlane.com/collections/mens-luxury-tees/products/…。
<div id="content" class="clearfix">中的所有内容都是通过backbone.js 注入的,在python-requests 的输出中,我只是得到了一个带有<!-- Filled in by Chaplin -->注释的空div……我可能会遗漏什么吗? -
我会查看请求并获取 everlane.com/api/collections
标签: python selenium web-scraping phantomjs headless-browser