智联爬取中,页码的数字和url是不匹配的,因此盲目的拼接url会造成错误,因此可以采用模拟浏览器爬取网页
要模拟浏览器需要知道scrapy流程,简图如下:

这里只是简单的写一些伪码,设计的数据清洗部分请看scrapy数据清洗

middleswares.py

from scrapy.http import HtmlResponse
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
class SeleniumMiddleware(object):def __init__(self):self.options = Options()self.browser = webdriver.Chrome(chrome_options = self.options)def process_request(self,request,spider):if int(request.meta['page']) ==2:self.browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(1)div = self.browser.find_element_by_css_selector('.soupager')next_page = div.find_elements_by_tag_name('button')#两种方法二选一# next_page[1].click()for button in next_page:if button.text == "下一页":button.click()else:if int(request.meta['page']) == 0:try:print('url is :::', request.url)self.browser.get(request.url)except TimeoutException as e:print('超时')time.sleep(5)return HtmlResponse(url=self.browser.current_url, body=self.browser.page_source,encoding='utf-8', request=request)#爬取过程中有时候会出现一种情况就是网页一直在加载,右上角有一个小圆圈一直再转,此时把圆圈差掉内容就可以加载出来
#browser.execute_script('window.stop()') 用这个方法.

spiders.py

# -*- coding: utf-8 -*-
import timeimport lxml.htmlimport scrapy
from lxml import etree
from scrapy import Request
class Jobparse():def __init__(self):pass
def parse_div_content(html_str):passdef parse_lxml_zhilian(html_str):tree = lxml.html.fromstring(html_str)job_url = tree.xpath('//a[@class="contentpile__content__wrapper__item__info__boxle"]/@href')job_name = tree.xpath('//a[@class="contentpile__content__wrapper__item__info__boxle"]/@title')print(job_url)print(job_name)return job_url#全部变量判断翻页速度与下载速度
count = 0
class ZhilianSpider(scrapy.Spider):name = 'zhilian'# allowed_domains = ['ts.zhaopin.com']# start_urls = ['http://ts.zhaopin.com/']def start_requests(self):url_str = "https://sou.zhaopin.com/?pageSize=60&jl=489&kw=python&kt=3"yield Request(url_str, callback=self.parse, dont_filter=True, meta={'page': '0'})def parse(self, response):# rs = response.css('div:nth-child(2)').extract()# print('rs is :::::', rs)# page_next = response.css('.soupager').extract()# print('page next is ::::', page_next)rs = response.css('div.contentpile_content_wrapper:nth-child(2)').extract()page_next = response.css('.soupager').extract()#假设每页60条数据 没翻一页数据多60条global countcount += 60for r in rs:job_url = parse_lxml_zhilian(r)yield Request(url=job_url,callback=self.parse_detail,meta={'page': '3'}, dont_filter=True)if len(page_next) > 0:#当数据>300可以让翻页暂停等待数据下载if count > 300:time.sleep(0.5)# 使用selenium模拟点击下一页,该请求不会产生实质的下载动作yield Request(url=response.url, callback=self.parse, meta={'page': '2'}, dont_filter=True)def parse_detail(self,response):#数据没下载一条,count - 1passglobal countcount -= 1#实现浏览器模拟与非模拟  只要中间件中不return 该请求就会自动留到downloader
#控制翻页速度和下载速度同步:

scrapy模拟浏览器翻页爬取智联相关推荐

  1. [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地

    前面 "Python爬虫之Selenium+Phantomjs+CasperJS" 介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分 ...

  2. Scrapy翻页爬取示例——列表页、详情页

    Scrapy翻页爬取示例--列表页.详情页 引言: 本人最近在帮助同事们爬取一批英-泰双语数据,顺带复习了一下scrapy爬虫相关的知识.下面以简单的小项目为例,一起来开始吧! 示例一:爬取列表页 本 ...

  3. selenium切换iframe框架案例——翻页爬取网易云音乐歌单作者和名称

    翻页爬取网易云音乐歌单作者和标题 案例目的: 通过翻页selenium操作网易云音乐,介绍如何切换iframe框架以及如何使用selenium定位数据所在的节点. 代码功能: 输入下载的数据页数,自动 ...

  4. Scrapy学习——爬取智联招聘网站案例

    Scrapy学习--爬取智联招聘网站案例 安装scrapy 下载 安装 准备 分析 代码 结果 安装scrapy 如果直接使用pip安装会在安装Twisted报错,所以我们需要手动安装. 下载 安装s ...

  5. Scrapy小白爬取智联校园招聘

    前言 掌握了一部分爬虫基础后开始学习Scrapy分布式爬虫,最初觉得会很难,以为分布式就是像hadoop分布式部署一样去配置很多文件,后来发现Scrapy相比普通python爬虫逻辑更简单,速度更快, ...

  6. scrapy爬取智联招聘

    我想分析下互联网行业全国招聘实习生的情况,通过爬取智联招聘,得到15467条数据,并导入Mysql 在items.py里: import scrapy from scrapy.http import ...

  7. 爬虫如何翻页 爬取豆瓣排名250电影

    1.爬虫翻页问题: 正在做爬虫练习:爬取豆瓣电影排名前250的电影,但一页只显示排名前25的电影,爬取250部电影就遇到了爬虫翻页的问题.记录下,希望帮助到正在学习的小伙伴! 2.爬虫翻页解决思路: ...

  8. python翻页爬取电影天堂网电影的磁力链接

    python翻页爬取电影天堂网电影的磁力链接 案例目的: 介绍如何通过首页的url提取详情页的url以及如何通过xpath语法提取详情页的数据. 代码功能: 输入要爬取的页数,自动保存电影的名称以及对 ...

  9. python翻页爬取京东商品评价

    python翻页爬取京东商品评价 以小米手机评论为案例 1.找到目标的url 2.检查响应结果 3.解析json数据,发现相应数据无法成功解析 注意:json数据一般都是以大括号或中括号开头或者结尾的 ...

最新文章

  1. 前瞻:Spring Boot 2.4.0 第二个里程碑版本发布
  2. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation
  3. ServletContext读取属性文件
  4. win10 mysql数据库中文乱码
  5. 【赠书】当深度学习遇上图: 图神经网络的兴起!
  6. 在aarch64-himix100-linux-gcc下cmake报错(The C compiler identification is unknown)
  7. 计算机盘中文件夹丢失,电脑装机后原区分f盘内文件夹丢失如何找回
  8. python的输出语句
  9. 闩锁效应Latch-up effect---Phsical cell---Welltap---SOI
  10. 怎样编辑pdf文件?手把手教你如何使用PDF编辑器
  11. 经济学原理——微观经济学
  12. 法语计算机相关书籍,法语网络计算机相关词汇
  13. C++ TLV格式解析
  14. db2 日期英式写法_英语日期格式
  15. #读书笔记#《富爸爸窮爸爸》 | Rich Dad Poor Dad 罗伯特.清崎 Robert Kiyosaki
  16. 服务器2003蓝屏A5修复,win2003文件服务器蓝屏修复全过程分享第2/2页
  17. 追风筝的人 第八章
  18. python opencv 人体/人脸识别 简易demo
  19. 通过淘宝链接获取解析获取商品id(淘宝API )
  20. 三步教你制作龙卷风迁徙地图

热门文章

  1. easyui acceptChanges 更新无法获取数据
  2. 拥抱90后 农产品品牌才能不被互联网时代“安排”
  3. 机器学习(学习笔记)
  4. sql注入:万能钥匙注入
  5. 表单账号,密码,邮箱验证登录
  6. 2020网络教育计算机统考,2020年12月网络教育统考《计算机应用基础》单选题61
  7. 微信故障中腾讯迎来18岁,但仍面临四大危机
  8. Linux 拷贝文件:cp 命令
  9. html5实现边框为圆圈,CSS怎样做出自适应圆形边框?
  10. win10登录失败未授予用户在此计算机上,登录失败:未授予用户在此计算机上的请求登录类型。无法访问...