最新版本cookie问题已解决,需要具体方法啥的评论区留言或者私信。 --2020年3月20日

下面是最初版本,使用selenium采集。

1.要爬取的网站:

                                   黑龙江政府采购网

这网站谁爬谁知道,时效性cookies,隔段时间爬取就得重新手动输入,用脚本返回的cookies还没用。

至少对我这种小渣渣来说用纯框架爬取不来,请教了前后端同事也没解决.无奈,只得使用自动化测试工具selenium

2.分析网站:

第一次请求不管从哪进去,都会回到这个界面,所以我们直接从这个url:http://www.ccgp-heilongj.gov.cn/index.jsp开始

在项目的spider.py中:

# -*- coding: utf-8 -*-
import scrapy
from CCGPHLJ.items import CcgphljItem
from scrapy import Request
import time
import re
from selenium import webdriverclass HljccgpSpider(scrapy.Spider):name = 'hlj_tender_11'allowed_domains = ['']start_urls = ['']bash_url = 'http://www.ccgp-heilongj.gov.cn'def __init__(self):self.chromedriverPath = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"#这是我的谷歌驱动位置,若是不同,记得修改self.browser = webdriver.Chrome(executable_path=self.chromedriverPath)self.browser.set_page_load_timeout(30)self.flag = True  #True需要进过自动化测试工具,False则不操作,直接返回请求结果def spider_closed(self, spider):# 当爬虫退出的时候关闭Chromeprint('关闭selenium打开的网页')self.browser.quit()def start_requests(self):for page in range(1,3):full_url = "http://www.ccgp-heilongj.gov.cn/index.jsp"yield scrapy.Request(full_url, callback=self.parse, dont_filter=True)def parse(self, response):second_url = response.xpath(r'//span[@class="lbej"]/a/@onclick').extract()for j, url in enumerate(second_url):if "http" in url:full_url = urlelse:full_url = self.bash_url + re.findall(r"href='(.*?)'",url)[0]self.flag = False #传入False,那么在中间件就会直接返回结果yield requestdef parse_content(self, response):#省略自行操作print("获取到了各个详情页",response.text)

在 middlewares.py中间件中:

 def process_request(self, request, spider):if spider.name == 'hlj_tender_11':  # 只针对特定的爬虫脚本实现selenium 爬取if spider.flag:try:#这网站是通过js实现跳转的,所以就没有用点击了spider.browser.get(request.url)spider.browser.execute_script("location.href='/welcome.jsp?dq=23';return false;")#执行js代码,进入首页spider.browser.execute_script("onedet('4','');return false;")#执行js代码,进入更多页except TimeoutException as e:print('超时',e)spider.browser.execute_script('window.stop()')time.sleep(2)return HtmlResponse(url=spider.browser.current_url, body=spider.browser.page_source,encoding="utf-8", request=request)else:time.sleep(1)return None

部分代码截图及其效果:

最终爬取效果:

成功获取列表页及其内容

scrapy-selenium-谷歌浏览器爬取带有时效性cookies的网站相关推荐

  1. scrapy + selenium + chromedriver爬取动态数据

    scrapy是一个网页爬虫框架 安装scrapy 推荐使用Anaconda 安装 Anaconda 安装介绍 http://www.scrapyd.cn/doc/124.html 安装后需要配置 清华 ...

  2. 用scrapy+selenium+Firefox爬取腾讯新闻

    一.首先配置 1.scrapy 2.selenium 3.webdriver 4.浏览器Firefox 具体的安装可以去这个兄弟的博客看看https://blog.csdn.net/azsx02/ar ...

  3. 跌跌撞撞尝试Scrapy+Selenium+MySQL爬取与存储东方财富网股票数据

    目录 网页信息 爬虫框架 stock_spider.py(爬虫文件) items.py (爬取字段命名) middlewares.py(Selenium中间件) pipelines.py settin ...

  4. 用scrapy+selenium + phantomjs 爬取vip网页,保存为json格式,写入到mysql数据库,下载图片(二)

    接上一编 weipin.py文件的代码 : # -*- coding: utf-8 -*- import scrapy from weipinhui.items import WeipinhuiIte ...

  5. python爬取手机aop_用selenium+谷歌浏览器爬取美拍视频真实链接

    [Python] 纯文本查看 复制代码from selenium import webdriver import time driver = webdriver.Chrome() #实例化对象 dri ...

  6. python Scrapy Selenium PhantomJS 爬取微博图片

    1,创建项目 scrapy startproject weibo #创建工程 scrapy genspider -t basic weibo.com weibo.com #创建spider 目录结构 ...

  7. 用scrapy+selenium + phantomjs 爬取vip网页,保存为json格式,写入到mysql数据库,下载图片(一)

    用命令在终端创建一个项目: scrapy startproject myvipspider 进入到myvipspider项目下运行命令: scrapy genspider weipin "v ...

  8. Python爬虫实战使用scrapy与selenium来爬取数据

    系列文章目录 实战使用scrapy与selenium来爬取数据 文章目录 系列文章目录 前言 一.前期准备 二.思路与运行程序 1.思路 2.运行程序 三.代码 1.代码下载 2.部分代码 总结 前言 ...

  9. Python+谷歌浏览器--电商秒杀器Selenium自动化爬取

    用Selenium自动化爬取电商 本文只用于学习,禁止用于商业用途,否则后果自负. 本文主要写Selenium自动化爬取编程 参考之前的一些博客,做过类似的爬取,但不是爬电商,原理都是类似的.有实际用 ...

最新文章

  1. 图像对象paip.Image对象出现“对象当前正在其他地方使用或者GDI+中发生一般性错误的解决...
  2. 有理贝塞尔曲线(Rational Bezier Curves)
  3. windows Nvidia GPU指令
  4. IIS6.0官方技术必读
  5. MySQL my.cnf file - Found option without preceding group
  6. 【超分辨率实验】Matlab-使用深度学习的单图像超分辨率(Single Image Super-Resolution Using Deep Learning)
  7. Android之程序反复回调一个类的解决办法
  8. 32 bit 与 64 bit 程序(2)比较
  9. sql checksum_SQL Server中的CHECKSUM页面验证
  10. 用指针交换两个数_C语言100题集合026-使用指针交换两个数组中的最大值
  11. 学习笔记-AngularJs(三)
  12. MyBatis(二)------使用JDBC编程问题总结
  13. ubuntuQQ、微信安装
  14. unity模型制作(四):绘制一个凹多边形
  15. oracle删除行 锁表,oracle锁表
  16. ThinkPad T43续命记
  17. 两年嵌入式软件开发的工作感想
  18. CentOS7修改主机名称(hostname)总是不成功的原因及解决办法
  19. IT界最短的笑话:上中台!
  20. 简述利用PE系统破解Windows密码

热门文章

  1. vue中使用滚动到列表底部
  2. Pytorch目标检测学习资源
  3. UI小练习,模仿登陆界面
  4. win10 安装kali子系统
  5. 淘宝个人卖家如何进行免登声明
  6. unity如何用代码创建自已的logo
  7. 2020阿里云服务器购买攻略-618年中大促专场
  8. 网易易盾js逆向分析
  9. 工作中jQuery常用实例-主要功能总结整理
  10. PCIE操作基础原理