zoukankan      html  css  js  c++  java
  • 【爬虫】selenium集成到scrapy中

    在middlewares.py中定义一个class:

     1 from selenium.common.exceptions import TimeoutException
     2 from scrapy.http import HtmlResponse  #传递js加载后的源代码,不会返回给download
     3 class JSPageMiddleware(object):
     4     #通过chrome请求动态网页
     5     def process_request(self, request, spider):
     6         if spider.name == "JobBole":
     7             try:
     8                 spider.browser.get(request.url)
     9             except TimeoutException:
    10                 print('30秒timeout之后,直接结束本页面')
    11                 spider.browser.execute_script('window.stop()')
    12             import time
    13             time.sleep(3)
    14             print("访问:{0}".format(request.url))
    15 
    16             return HtmlResponse(url=spider.browser.current_url, body=spider.browser.page_source, encoding="utf-8", request=request)
    17             '''编码默认是unicode'''

    spider中的代码:

     1 name = "JobBole"
     2     allowed_domains = ["jobbole.com"]
     3     start_urls = ['http://blog.jobbole.com/all-posts/']
     4 
     5     def __init__(self):
     6         '''chrome放在spider中,防止每打开一个url就跳出一个chrome'''
     7         self.browser=webdriver.Chrome(executable_path='E:/chromedriver.exe')
     8         self.browser.set_page_load_timeout(30)
     9         super(JobboleSpider, self).__init__()
    10         dispatcher.connect(self.spider_close,signals.spider_closed)
    11 
    12     def spider_close(self,spider):
    13         #当爬虫退出的时候关闭Chrome
    14         print("spider closed")
    15         self.browser.quit()

    把selenium集成到scrapy中主要改变的就是这两处地方。

    以上的在scrapy中嵌入selenium的chrome并不是异步的,所以效率会变差。

    这里都是部分代码,完整代码链接:https://github.com/pujinxiao/jobbole_spider

    转至http://www.cnblogs.com/jinxiao-pu/p/6815845.html

  • 相关阅读:
    将1、2、3..10...变成01、02、03...10...
    idea启动项目时报错
    八锁现象
    友联
    通达OA 任意文件删除结合文件上传导致RCE漏洞复现
    Linux提权
    vulnhub靶机DC2记录
    ThinkPHP5.x 任意代码执行漏洞复现
    SaltStack远程命令执行漏洞复现(CVE-2020-11651、CVE-2020-11652)
    vulnhub靶机DC1记录
  • 原文地址:https://www.cnblogs.com/qingsheng/p/9202530.html
Copyright © 2011-2022 走看看