Traceback (most recent call last): File "main.py", line 81, in
<module>
crawler_machine() File "main.py", line 76, in crawler_machine
driver.close() AttributeError: 'NoneType' object has no attribute 'close'
Exception AttributeError: "'Service' object has no attribute
'process'" in <bound method Service.__del__ of
<selenium.webdriver.phantomjs.service.Service object at 0x107d05790>>
ignored
我遵循项目中给出的所有指示
代码是main.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from config import URL_FORMAT, SCROLL_TIMES, PHANTOM_JS_PATH, WEBDRIVER
from parser import FParser
from optparse import OptionParser
import signal
import sys
import time
driver = None
def close(signal, frame):
'''
When you press Ctrl-C the browser closes
'''
global driver
print('You pressed Ctrl+C!')
driver.close()
signal.pause()
sys.exit(0)
def scroll_down(driver):
'''
This helps you to scroll the search results page to load more results
'''
for i in range(SCROLL_TIMES):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(0.3)
def get_page(driver, url):
driver.get(url)
return driver.page_source
def press_the_button_2_crawl(driver, keyword):
"""
Main function handles everything
"""
html_data = get_page(driver, URL_FORMAT % keyword)
scroll_down(driver)
parser = FParser(html_data)
parser.store() #store into db
time.sleep(2)
def crawler_machine(search_word=None):
global driver
optparser = OptionParser()
optparser.add_option("-s", "--search",
type="string", dest="search")
(options, args) = optparser.parse_args()
keyword = options.search or search_word
print "Keyword",keyword
try:
try:
#headless phantomjs for 32bit unix based machines
driver = webdriver.PhantomJS(executable_path=PHANTOM_JS_PATH)
except:
#firefox
driver = webdriver.Firefox()
signal.signal(signal.SIGINT, close)
press_the_button_2_crawl(driver, keyword)
finally:
driver.close() #line 76=================================
if __name__ == '__main__':
crawler_machine() #line 81=================================
我的猜测是,创建驱动程序的尝试都失败了--PhantomJS和FireFox,这意味着当您到达finally块时,driver
仍然none
。您可以通过添加显式检查来确认这一点:
finally:
if driver:
driver.close()
else:
print "Could not create driver"
至于驱动程序创建失败的原因,最有可能的解释是安装问题。您可以通过在Python环境中运行一个简单的示例来测试这一点:
>>> from selenium.webdriver import Firefox
>>> d = Firefox()
>>> d.get('http://stackoverflow.com')
如果没有打开Firefox并导航到Stack Overflow的首页,请检查您操作系统的Selenium文档。
问题内容: 下面的代码给出了错误: 码: 问题答案: 从代码中,我可以看到你希望允许用户下载pdf。 现在开始 去 http://localhost:5000
问题内容: 我遇到了这个问题,我不明白为什么。 我从我的应用程序中获取了代码,并制作了此测试代码,因此您不必费劲地查看我的要求。 我有这个工作在其他代码。但是,在将两者进行比较之后,我无法为自己的一生解决这个问题。 在此应用程序中,出现错误“ AttributeError:’NoneType’对象没有属性’delete’”。 问题答案: 在这一行: grid不返回任何内容,因此entryBox是,
我在IPython中运行%matplotlib,但是有一个属性错误:'NoneType'对象没有属性'lower' Python 3.7;马科斯·莫哈韦10.14。6(18G84);康达matplotlib:3.1。1个pypi_0个pypi
这是我的代码,它在linux上工作得很好,但是当我试图通过buildozer创建apk时,应用程序在开始时崩溃,logcat命令给出了这个结果 [警告][音频]找不到 的加载程序:跟踪(最近的调用为last)::文件“/home/moh/audio2/.buildozer/android/app/main.py”,第15行,在:文件“/home/moh/audio2/.buildozer/andr
如果pk_col值为空,则应打印未定义的主键。但我得到了这个错误。“NoneType”对象没有属性“rdd”。
问题内容: 我不断收到错误消息,说 我的代码太长了,无法在此处发布。哪些一般情况会导致这种情况,这NoneType意味着什么,我如何缩小正在发生的事情? 问题答案: NoneType意味着你实际上拥有了而不是你认为正在使用的任何或的实例。这通常意味着在上面的赋值或函数调用失败或返回了意外结果。