- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用 splinter 和 Python,我有两个线程在运行,每个线程都访问相同的主 URL 但不同的路由,例如线程一命中:mainurl.com/threadone
线程二命中:mainurl.com/threadtwo
使用:
from splinter import Browser
browser = Browser('chrome')
但是遇到了以下错误:
Traceback (most recent call last):
File "multi_thread_practice.py", line 299, in <module>
main()
File "multi_thread_practice.py", line 290, in main
first_method(r)
File "multi_thread_practice.py", line 195, in parser
second_method(title, name)
File "multi_thread_practice.py", line 208, in confirm_product
third_method(current_url)
File "multi_thread_practice.py", line 214, in buy_product
browser.visit(url)
File "/Users/joshua/anaconda/lib/python2.7/site-packages/splinter/driver/webdriver/__init__.py", line 184, in visit
self.driver.get(url)
File "/Users/joshua/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 261, in get
self.execute(Command.GET, {'url': url})
File "/Users/joshua/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 247, in execute
response = self.command_executor.execute(driver_command, params)
File "/Users/joshua/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 464, in execute
return self._request(command_info[0], url, body=data)
File "/Users/joshua/anaconda/lib/python2.7/site-packages/selenium/webdriver/remote/remote_connection.py", line 488, in _request
resp = self._conn.getresponse()
File "/Users/joshua/anaconda/lib/python2.7/httplib.py", line 1108, in getresponse
raise ResponseNotReady()
httplib.ResponseNotReady
错误是什么?我应该如何处理这个问题?
预先感谢您,一定会投票/接受答案
已添加代码
import time
from splinter import Browser
import threading
browser = Browser('chrome')
start_time = time.time()
urlOne = 'http://www.practiceurl.com/one'
urlTwo = 'http://www.practiceurl.com/two'
baseUrl = 'http://practiceurl.com'
browser.visit(baseUrl)
def secondThread(url):
print 'STARTING 2ND REQUEST: ' + str(time.time() - start_time)
browser.visit(url)
print 'END 2ND REQUEST: ' + str(time.time() - start_time)
def mainThread(url):
print 'STARTING 1ST REQUEST: ' + str(time.time() - start_time)
browser.visit(url)
print 'END 1ST REQUEST: ' + str(time.time() - start_time)
def main():
threadObj = threading.Thread(target=secondThread, args=[urlTwo])
threadObj.daemon = True
threadObj.start()
mainThread(urlOne)
main()
最佳答案
据我所知,您尝试执行的操作在一个浏览器上是不可能的。 Splinter 作用于实际的浏览器,因此,同时传递许多命令会导致问题。它的行为就像人类与浏览器交互一样(当然是自动的)。可以打开许多浏览器窗口,但您不能在没有收到前一个请求的响应的情况下在不同的线程中发送请求。这会导致 CannotSendRequest 错误。所以,我建议(如果你需要使用线程)打开两个浏览器,然后使用线程通过它们各自发送一个请求。否则无法完成。
此线程基于 selenium,但信息是可传输的。 Selenium multiple tabs at once同样,这说明你想要(我假设)做的是不可能的。绿色打勾的回答者提出了与我相同的建议。
希望这不会让您偏离轨道太多,并帮助您走出困境。
编辑:只是为了展示:
import time
from splinter import Browser
import threading
browser = Browser('firefox')
browser2 = Browser('firefox')
start_time = time.time()
urlOne = 'http://www.practiceurl.com/one'
urlTwo = 'http://www.practiceurl.com/two'
baseUrl = 'http://practiceurl.com'
browser.visit(baseUrl)
def secondThread(url):
print 'STARTING 2ND REQUEST: ' + str(time.time() - start_time)
browser2.visit(url)
print 'END 2ND REQUEST: ' + str(time.time() - start_time)
def mainThread(url):
print 'STARTING 1ST REQUEST: ' + str(time.time() - start_time)
browser.visit(url)
print 'END 1ST REQUEST: ' + str(time.time() - start_time)
def main():
threadObj = threading.Thread(target=secondThread, args=[urlTwo])
threadObj.daemon = True
threadObj.start()
mainThread(urlOne)
main()
请注意,我使用的是 firefox,因为我没有安装 chromedriver。
在浏览器打开后设置一个等待时间可能是个好主意,只是为了确保在计时器开始之前它们已完全准备好。
关于Python + split + http : Error - httplib. ResponseNotReady,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43619022/
我正在使用“bigquery_service = build('bigquery', 'v2', http=http)”,它在我的笔记本电脑中正确执行,但是当我在服务器上执行此查询时,出现以下错误。
我正在使用 python 为 elgg 编写一个 REST 客户端,即使请求成功,我也会得到以下响应: Traceback (most recent call last): File "testc
我正在使用 python 和 google bigquery 来执行一些操作。 我有一个名为 data-wagon 的 Google BigQuery 项目。我创建了一个数据集“vols”还有一张“航
我正在用 python 写一个简单的脚本到 replay saved HTTP requests . 这是脚本: import httplib requestFileName = 'C:/Users/
使用 splinter 和 Python,我有两个线程在运行,每个线程都访问相同的主 URL 但不同的路由,例如线程一命中:mainurl.com/threadone 线程二命中:mainurl.co
我正在尝试学习如何使用 http.client 进行编码,但一个简单的代码以这个错误结束,我不知道该怎么做。 import http.client conn=http.client.HTTPSConn
我正在尝试运行 Google API Python 库以使用 freebase API。我按照此链接中的教程进行操作。 https://developers.google.com/api-client
代码在 SDK 中运行得很好,但在 Google AppEngine 上,它就会崩溃: File "./oauth2client/util.py", line 137, in positional
我是一名优秀的程序员,十分优秀!