第三章 将 selenium集成到scrapy中

来源:互联网 发布:北京网络口碑营销公司 编辑:程序博客网 时间:2024/06/05 18:45

1.这里是jobbole的spider中的代码
class JobboleSpider(scrapy.Spider):    name = "jobbole"    allowed_domains = ["python.jobbole.com"]    start_urls = ['http://python.jobbole.com/all-posts/']    # 自定义设置    custom_settings = {        "DOWNLOAD_DELAY": 2,    }    def __init__(self):        # 通过selenium启动一个chrome浏览器        # 将webdriver放到spider中可以达到更好的并发效果,也可以在爬虫结束时关闭 Chrome        self.brower = webdriver.Chrome(executable_path=r"C:\scrapy\resource\chromedriver.exe")        super(JobboleSpider, self).__init__()        dispatcher.connect(self.close_brower, signals.spider_closed)        def close_brower(self):        # 当爬虫退出的时候关闭chrome        print("spider_closed close_brower")        self.brower.quit()


2.这里是middlewares.py中的代码

class JsPageMiddleware(object):    """    selenium模拟浏览器抓取js动态网页 中间件    每次spider request的时候都会进入这里    """    def process_request(self, request, spider):        if spider.name == "jobbole":            # 注意: url=request.url            spider.brower.get(url=request.url)            import time            time.sleep(3)            print("访问:url={0}".format(request.url))            # 返回response downloder就不会再去执行 避免重发处理 注意: url=spider.brower.current_url            return HtmlResponse(request=request, url=spider.brower.current_url, encoding="utf-8", body=spider.brower.page_source)






原创粉丝点击