- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想对很多网页进行截图,我是这样写的:
from splinter.browser import Browser
import urllib2
from urllib2 import URLError
urls = ['http://ubuntu.com/', 'http://xubuntu.org/']
try :
browser = Browser('firefox')
for i in range(0, len(urls)) :
browser.visit(urls[i])
if browser.status_code.is_success() :
browser.driver.save_screenshot('your_screenshot' + str(i) + '.png')
browser.quit()
except SystemError :
print('install firefox!')
except urllib2.URLError, e:
print(e)
print('theres no such website')
except Exception, e :
print(e)
browser.quit()
我得到了这个错误:
<urlopen error [Errno 111] Connection refused>
如何解决?:)
编辑
当我在 txt 文件中有链接时,下面的代码不起作用:
from splinter import Browser
import socket
urls = []
numbers = []
with open("urls.txt", 'r') as filename :
for line in filename :
line = line.strip()
words = line.split("\t")
numbers.append(str(words[0]))
urls.append(str(words[1].rstrip()))
print(urls)
browser = None
try:
browser = Browser('firefox')
for i, url in enumerate(urls, start=1):
try:
browser.visit(url)
if browser.status_code.is_success():
browser.driver.save_screenshot('your_screenshot_%03d.png' % i)
except socket.gaierror, e:
print "URL not found: %s" % url
finally:
if browser is not None:
browser.quit()
我的 txt 文件如下所示:
1 http//ubuntu.com/
2 http//xubuntu.org/
3 http//kubuntu.org/
当我运行它时,出现错误:
$ python test.py
['http//ubuntu.com/', 'http//xubuntu.org/', 'http//kubuntu.org/']
Traceback (most recent call last):
File "test.py", line 21, in <module>
browser.visit(url)
File "/usr/local/lib/python2.7/dist-packages/splinter/driver/webdriver/__init__.py", line 79, in visit
self.driver.get(url)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 168, in get
self.execute(Command.GET, {'url': url})
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 156, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 147, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: u'Component returned failure code: 0x804b000a (NS_ERROR_MALFORMED_URI) [nsIIOService.newURI]'
这次有什么问题吗?
最佳答案
您的问题是您在循环内通过 URL 执行 browser.quit()
,因此它不再为第二个 URL 打开。
这是您的代码的更新版本:
from splinter import Browser
import socket
urls = ['http://ubuntu.com/', 'http://xubuntu.org/']
browser = None
try:
browser = Browser('firefox')
for i, url in enumerate(urls, start=1):
try:
browser.visit(url)
if browser.status_code.is_success():
browser.driver.save_screenshot('your_screenshot_%03d.png' % i)
except socket.gaierror, e:
print "URL not found: %s" % url
finally:
if browser is not None:
browser.quit()
主要的变化是将 browser.quit()
代码移动到您的主要异常处理程序的 finally
中,这样无论出现什么问题,它都会发生。还要注意使用 enumerate
来提供迭代器值及其索引;这是在 Python 中推荐的方法,而不是维护您自己的索引指针。
我不确定它是否与您的代码相关,但我发现 splinter
在 urllib2.URLError
上引发了 socket.gaierror
异常,所以我展示了如何将它们也困住。我将这个异常处理程序移到了循环内;即使一个或多个 URL 不存在,这将继续抓取剩余的屏幕截图。
关于Python Splinter (SeleniumHQ) 如何截取多个网页? [连接被拒绝],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12660625/
所以我使用 splinter 登录到一个站点,然后我在登录后抓取 cookie,然后将其保存为 pickled 对象以备后用。 def save_cookie(username, password):
嗨,我想升级我的单声道版本,以便能够使用某些 .Net 4 功能。 我下载了 2.10 压缩包并按照我发现的说明进行了编译,这似乎进展顺利。 这是我得到的输出: $mono -V Mono JIT c
我是 Pov-Ray 的初学者,我正在尝试在 Pov-Ray 中创建一个车床对象,但它看起来有点破损。有人可以给我一些关于如何修复它的建议吗? 我用来创建的代码是 #include "colors.i
from splinter import Browser browser = Browser() browser.visit('http://www.google.com/') 直接从他们的教程开始,
最近,我注意到我的视差代码从左到右出现奇怪的抖动。代码非常简单: $(window).scroll(function(){ var body = $('body'); var top
我尝试了 overflow:hidden 解决方案来解决破坏 border-radius 的背景:http://jsfiddle.net/ypjDC/17/ test tes
当我将 Nilorea 库中的这个多行宏包含在我的 C++ 项目中时,它无法编译。它被标记为外部“C”。 尝试了 GodBolt,GCC 8.1 编译器在以下代码中的 if 语句上 barfs:htt
我在 python 上使用 splinter 模块。我需要检查一个元素在页面上是否可见,似乎唯一的判断方式是 style="display: none;"我找不到检测方法。 如何检查? 最佳答案 如果
这个问题在这里已经有了答案: left and top properties are not animated (2 个答案) 关闭 6 年前。
我需要通过传递一个字符串数组来在页面上执行 JavaScript 函数。我想避免多次调用 browser.execute_script 。 list_of_strings = ['a','b','c'
我正在尝试在以下方面进行浏览器自动化: https://play.google.com/store/apps/details?id=org.mozilla.firefox&hl=en 我可以使用以下方
鉴于此(“ sleep ”方法是为了让您可以看到我正在看的内容): from splinter import Browser import time #from selenium.webdriver.
我使用的是相对简单的组合布局,它确实有效,但在某些情况下,我的 UICollectionView 中的最后一两个单元格的宽度似乎不正确。 我的 collectionView 由具有动态宽度和静态高度的
我的对象列表是如此初始化: $( function() { var $container = $('div.hikashop_products'); $container.isotop
我正在使用jPlayer在页面中嵌入两个音频文件,基本上代码是cut'n'pasted from this page。一个是wav,另一个是mp3。在本地(mac)上一切正常,但是当我将其上传到服务器
在索引的names字段中执行术语汇总时,我得到了错误的结果。 以下是我使用的names字段的映射: { "dbnames": { "properties": { "names"
我想对视频播放(基于 AVPlayer)产生类似 splinter 的效果,它将转换到另一个视频或图像。 是否可以在 iOS5/6 中对这种视频创建这种效果? 如果不是,另一种方法是在最后播放帧的静止
我正在使用 Flask 尝试提供经过处理的图像,例如在模型处理后裁剪或将其转换给用户,但总是很短,因为它会产生一些错误。当我使用 numpy.rot90() 时,它没有按计划旋转我的图像,而是得到了这
XMFLOAT4X4 在矩阵定义中使用并内的并,但是当我尝试使用和不使用额外并的相同方法时,我会在访问模式中得到不同的结果。我不确定这是否是在 union 的初始化中,或者我在实现中可能会出错的地方。
这两条线实际上是点,但是当我运行 lineIntersects 方法时,我得到“true”作为返回值,有谁知道发生了什么或者这是一个错误?这是 documentation link这是source ,
我是一名优秀的程序员,十分优秀!