0


scrapy集成selenium

前言

  1. 使用scrapy默认下载器---》类似于requests模块发送请求,不能执行js,有的页面拿回来数据不完整
  2. 想在scrapy中集成selenium,获取数据更完整,获取完后,自己组装成 Response对象,就会进爬虫解析,现在解析的是使用selenium拿回来的页面,数据更完整

使用

集成selenium 因为有的页面,是执行完js后才渲染完,必须使用selenium去爬取数据才完
保证整个爬虫中,只有一个浏览器
只要爬取 下一页这种地址,使用selenium,爬取详情,继续使用原来的

第一步:在爬虫类中写

  1. from selenium import webdriver
  2. class CnblogsSpider(scrapy.Spider):
  3. bro = webdriver.Chrome(executable_path='./chromedriver.exe')
  4. bro.implicitly_wait(10)
  5. def close(spider, reason):
  6. spider.bro.close() #浏览器关掉

第二步:在中间件中

  1. def process_request(self, request, spider):
  2. # 爬取下一页这种地址---》用selenium,但是文章详情,就用原来的
  3. if 'sitehome/p' in request.url:
  4. spider.bro.get(request.url)
  5. from scrapy.http.response.html import HtmlResponse
  6. response = HtmlResponse(url=request.url, body=bytes(spider.bro.page_source, encoding='utf-8'))
  7. return response
  8. else:
  9. return None
标签: scrapy selenium

本文转载自: https://blog.csdn.net/xiaolisolovely/article/details/131730166
版权归原作者 淘淘桃 所有, 如有侵权,请联系我们删除。

“scrapy集成selenium”的评论:

还没有评论