老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

怎么在scrapy中利用phantomJS實現異步爬取-創新互聯

這篇文章給大家介紹怎么在scrapy中利用phantomJS實現異步爬取,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

專注于為中小企業提供成都網站制作、成都做網站、外貿營銷網站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業朝陽縣免費做網站提供優質的服務。我們立足成都,凝聚了一批互聯網行業人才,有力地推動了上1000家企業的穩健成長,幫助中小企業通過網站建設實現規模擴充和轉變。

使用時需要PhantomJSDownloadHandler添加到配置文件的DOWNLOADER中。

# encoding: utf-8
from __future__ import unicode_literals
 
from scrapy import signals
from scrapy.signalmanager import SignalManager
from scrapy.responsetypes import responsetypes
from scrapy.xlib.pydispatch import dispatcher
from selenium import webdriver
from six.moves import queue
from twisted.internet import defer, threads
from twisted.python.failure import Failure
 
 
class PhantomJSDownloadHandler(object):
 
 def __init__(self, settings):
  self.options = settings.get('PHANTOMJS_OPTIONS', {})
 
  max_run = settings.get('PHANTOMJS_MAXRUN', 10)
  self.sem = defer.DeferredSemaphore(max_run)
  self.queue = queue.LifoQueue(max_run)
 
  SignalManager(dispatcher.Any).connect(self._close, signal=signals.spider_closed)
 
 def download_request(self, request, spider):
  """use semaphore to guard a phantomjs pool"""
  return self.sem.run(self._wait_request, request, spider)
 
 def _wait_request(self, request, spider):
  try:
   driver = self.queue.get_nowait()
  except queue.Empty:
   driver = webdriver.PhantomJS(**self.options)
 
  driver.get(request.url)
  # ghostdriver won't response when switch window until page is loaded
  dfd = threads.deferToThread(lambda: driver.switch_to.window(driver.current_window_handle))
  dfd.addCallback(self._response, driver, spider)
  return dfd
 
 def _response(self, _, driver, spider):
  body = driver.execute_script("return document.documentElement.innerHTML")
  if body.startswith(""): # cannot access response header in Selenium
   body = driver.execute_script("return document.documentElement.textContent")
  url = driver.current_url
  respcls = responsetypes.from_args(url=url, body=body[:100].encode('utf8'))
  resp = respcls(url=url, body=body, encoding="utf-8")
 
  response_failed = getattr(spider, "response_failed", None)
  if response_failed and callable(response_failed) and response_failed(resp, driver):
   driver.close()
   return defer.fail(Failure())
  else:
   self.queue.put(driver)
   return defer.succeed(resp)
 
 def _close(self):
  while not self.queue.empty():
   driver = self.queue.get_nowait()
   driver.close()

關于怎么在scrapy中利用phantomJS實現異步爬取就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網站題目:怎么在scrapy中利用phantomJS實現異步爬取-創新互聯
標題URL:http://www.xueling.net.cn/article/shjsh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 中国黄色一级 | 久久亚洲精品中文字幕无码 | 息与子五十路中文字幕 | 久久亚洲国产成人精品性色 | 国产萌白酱喷水视频在线观看 | 不卡在线一区2区三区 | 精品免费国产一区二区三区四区介绍 | 97香蕉超级碰碰碰久久兔费 | 懂色av一区二区三区 | 色欲色欲日韩WWW在线观看 | 小明看国产 | 亚洲精品无码MV在线观看软件 | 亚洲AV影院一区二区三区 | 深夜福利啪啪片 | 色婷婷一区二区三区在线观看 | 神马久久久久久久久久久 | 中国娇小与黑人巨大交导演 | 日本一区二区高清不卡 | 日韩精品人妻系列无码专区 | 久久精品15| 麻豆国产VA免费精品高清在线 | 成人国产精品入麻豆 | 老司机午夜福利视频 | 成人免费看片网站 | 欧美大片久久国产欧美日韩精品 | a一级片 | 欧美最厉害的喷水VIDEOS | 欧美性受ⅹ╳╳╳黑人a性爽 | 国产又粗又硬又黄视频免费着 | 亚洲一区二区五区 | 日韩欧美成人精品 | 高清久久久久 | 亚洲sss综合天堂久久 | pron综合视频| 国外精品视频在线观看免费 | 欧美精品久久久久久久久 | 无码精品人妻一区二区三区共妻 | 成人午夜精品无码区久久 | 自拍中文字幕 | 欧美区一区二 | 亚洲免费色 |