在爬取有些网站的是后,数据不一定全部是可视化界面的,当我们拖动滚动条时才会加载其他的数据,如果我们也想爬取这部分数据,就需要使用selenium模块,在scrapy里可以结合该模块修改返回对象

一、编写爬虫文件代码 

 1 import scrapy
 2 from selenium import webdriver
 3 from wangyi.items import WangyiItem
 4
 5
 6 class TestSpider(scrapy.Spider):
 7     name = 'test'
 8     # allowed_domains = ['www.xxx.com']
 9     start_urls = ['http://war.163.com/']
10
11     def __init__(self):
12         self.bro = webdriver.Chrome(executable_path=r'F:\爬虫加数据\练习\第三天\chromedriver.exe')
13
14     def parse(self, response):
15
16         div_list = response.xpath('//div[@class="data_row news_article clearfix "]')
17         for div in div_list:
18             item = WangyiItem()
19             title = div.xpath('./div/div/h3/a/text()').extract_first()
20             time = div.xpath('./div/div[2]/span/text()').extract_first()
21             print(title)
22             item['title'] = title
23             item['time'] = time
24             yield item
25
26     def closed(self, spider):
27         print('关闭浏览器对象!')
28         self.bro.quit()

注意,当创建完浏览器对象时,按照以前的写法,我们会直接的解析def parse 方法的返回值response来获取对象,很遗憾这里不是,因为我们要爬取的网页的数据是动态加载的,所有我们需要在middlewares.py文件改变他的返回对象response,所以说上面的response是我们改变之后的返回对象

二、修改response对象

  在中间件里有两个类,SpiderMiddleware 和 DownloaderMiddleware,这里修改的是 DownloaderMiddleware 下的 def process_response,具体原理可以看看 scrapy 的五大核心组件

  修改代码
  

 1 from scrapy.http import HtmlResponse
 2 def process_response(self, request, response, spider):
 3         # Called with the response returned from the downloader.
 4
 5         # Must either;
 6         # - return a Response object
 7         # - return a Request object
 8         # - or raise IgnoreRequest
 9         bro = spider.bro
10         bro.get(url=request.url)
11         sleep(3)
12         # 获取爬取的数据
13         page_text = bro.page_source
14         sleep(3)
15
16         return HtmlResponse(url=spider.bro.current_url, body=page_text, encoding='utf8', request=request)

spider 是爬虫文件的对象,spider.bro是初始化创建的浏览器对象,request.url 是起始地址 和下面的spider.bro.current_url 是同一个地址,最终返回修改后的response

返回值后就可以对数据进行解析,获取对应的数据,

三、将获取的数据做持久化存储,

  在前几篇介绍过,这里不重复写

四、修改配置文件

DOWNLOADER_MIDDLEWARES = {'wangyi.middlewares.WangyiDownloaderMiddleware': 543,
}

转载于:https://www.cnblogs.com/liaopeng123/p/10467408.html

利用scrapy框架爬取动态加载的数据相关推荐

  1. 教你用Python爬取动态加载的数据

    例子1:爬取豆瓣电影中的电影详情数据 url:https://movie.douban.com/ 1.什么是动态加载的数据: 我们通过requests模块进行数据爬取无法每次都是可见即可得,有些数据是 ...

  2. 用Python爬取动态加载的诸如百度的图片

    用Python爬取动态加载的诸如百度的图片 使用原因 代码如下 模块介绍 selenium模块 lxml解析模块 requests模块 去除重复 开启多线程 效果如下 留言 使用原因 学习Python ...

  3. python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)

    注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...

  4. python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战

    先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...

  5. 利用Scrapy框架爬取LOL皮肤站高清壁纸

    利用Scrapy框架爬取LOL皮肤站高清壁纸  Lan   2020-03-06 21:22   81 人阅读  0 条评论 成品打包:点击进入 代码: 爬虫文件 # -*- coding: utf- ...

  6. 利用Scrapy框架爬取前途无忧招聘信息

    利用Scrapy框架爬取前途无忧招聘信息 关于安装和命令使用可参考:https://docs.scrapy.org/en/1.7/intro/install.html 先创建项目和爬虫文件 分析网站 ...

  7. Scrapy框架爬取中国裁判文书网案件数据

    Scrapy框架爬取中国裁判文书网案件数据 项目Github地址: https://github.com/Henryhaohao/Wenshu_Spider 中国裁判文书网 - http://wens ...

  8. Python爬取动态加载的壁纸网站(高清壁纸福利)

    "静态网页"和"动态网页" "静态网页":一次性加载,爬虫可以爬到全部信息.关于静态网页的Demo "动态网页":分多次 ...

  9. python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...

    学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选. 但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两 ...

最新文章

  1. reactor线程模型_从TCP服务器到I/O模型,带你学习Netty
  2. View的绘制-draw流程详解
  3. 介绍最全的LVS负载均衡技术
  4. uselocale_Java扫描仪useLocale()方法与示例
  5. 更好地在云上:物联网,大数据和人工智能
  6. [VB.net]飞龙·网页及贴吧操作II
  7. 5.1 损坏联机日志的恢复方法
  8. React Native屏幕尺寸适配
  9. 根据ip获取经纬度_PHP使用百度地图获取指定地址坐标:创建AK(图文+视频)
  10. 自疫情暴发以来,99%的中国IT决策者认为数据变得更重要
  11. UITableView滚动到指定位置
  12. 规则引擎drools java,spring,spring-boot,drools使用案例
  13. 10分钟入门Shell脚本编程
  14. corpus iweb_BYU-Corpus杨百翰大学英语语料系列数据库(BYU)
  15. 书籍之 Head First HTML与CSS
  16. 夏普 Sharp MX-M260 32位系统安装驱动后乱码
  17. 电信光猫PT622 G开通ipv6
  18. 英文版权声明_传统文化 | 中国著名旅游景点的英文表达—上海
  19. 手机端和pc端浏览器兼容性问题
  20. 谷歌浏览器chrome长截图功能,不用工具轻松截图

热门文章

  1. [洛谷P3292] [SCOI2016]幸运数字
  2. Andrew Ng机器学习编程作业:K-means Clustering and Principal Component Analysis
  3. Spring框架第一天
  4. C# semaphore的使用
  5. python 常用内置函数
  6. JNI_Android项目中调用.so动态库实现详解【转】
  7. 《软件工程》课程改进意见
  8. poj3264Balanced Lineup(RMQ)
  9. PHP远程文件管理,可以给表格排序,遍历目录,时间排序
  10. Base64编码简介及在java中的使用