一、利用selenium 爬取 网易军事新闻

使用流程:

'''
在scrapy中使用selenium的编码流程:
1.在spider的构造方法中创建一个浏览器对象(作为当前spider的一个属性)
2.重写spider的一个方法closed(self,spider),在该方法中执行浏览器关闭的操作
3.在下载中间件的process_response方法中,通过spider参数获取浏览器对象
4.在中间件的process_response中定制基于浏览器自动化的操作代码(获取动态加载出来的页面源码数据)
5.实例化一个响应对象,且将page_source返回的页面源码封装到该对象中
6.返回该新的响应对象
'''

首先需要在中间件导入

from scrapy.html import HtmlResponse

DownloadMiddleware函数

    def process_response(self, request, response, spider):
# Called with the response returned from the downloader. # Must either;
# - return a Response object
# - return a Request object
# - or raise IgnoreRequest # 获取动态加载出来的数据
print("即将返回一个新的响应对象")
bw = spider.bw
bw.get(url = request.url)
import time
# 防止数据加载过慢
time.sleep(3)
# 包含了动态加载的数据
page_text = bw.page_source
time.sleep(3)
return HtmlResponse(url=spider.bw.current_url,body=page_text,
encoding="utf8",request=request)

spider.py

# -*- coding: utf-8 -*-
import scrapy
from selenium import webdriver class ScrapySeleniumSpider(scrapy.Spider):
name = 'scrapy_selenium'
# allowed_domains = ['www.xxx.com']
start_urls = ['http://war.163.com/']
def __init__(self):
self.bw = webdriver.Chrome(executable_path="F:\爬虫+数据\chromedriver.exe") def parse(self, response):
div_list = response.xpath('//div[@class="data_row news_article clearfix "]')
for div in div_list:
title = div.xpath('.//div[@class="news_title"]/h3/a/text()').extract_first()
print(title) def closed(self, spider):
print('关闭浏览器对象!')
self.bw.quit()

还需要注意的是使用中间件的同时需要在settings中解释一下Downloadmiddleware

结果是这样就成功喽

最新文章

  1. [Nhibernate]一级缓存
  2. 20145227&20145201 《信息安全系统设计基础》实验四
  3. mysql主从复制的一些东西的整理
  4. MVP
  5. Hibernate的集合映射与sort、order-by属性
  6. bsgrid
  7. 字符串匹配KMP算法
  8. android-exploitme(六):基础加密
  9. MySQL 에서 root 암호 변경하기
  10. Java 数组在内存中的结构
  11. Goldbach's Conjecture(哥德巴赫猜想)
  12. jQuery中的attr()和prop()使用
  13. JQuery事件与动画总结
  14. 通过cmd窗口导入导出mysql数据库
  15. PTA中如何出Java题目?
  16. samba及其基本应用
  17. wampserver本地配置域名映射
  18. Oracle中PL/SQL的循环语句
  19. Bzoj3122:多项式BSGS
  20. Window 10 :如何彻底关闭:Windows Defender Service(2015-12-20日更新)

热门文章

  1. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案安装使用常见问题的分析
  2. Python正则简单实例分析
  3. 大数据 -- zookeeper和kafka集群环境搭建
  4. java导出pdf功能记录
  5. js小数计算的问题,为什么0.1+0.2 != 0.3
  6. java修改文件所有者及其权限
  7. Linux虚拟环境配置(安装python包,连接至jupyter notebook)
  8. maven的依赖范围scope
  9. python 必选参数、默认参数、可变参数和、关键字参数
  10. window安装mysql8.0解决大部分客户端无法连接问题登陆问题