爬虫
梦因you而美
因为坚守,所以花开不败!
展开
-
python 下载m3u8视频
https://leetcode-cn.com/problems/course-schedule/solution/ke-cheng-biao-by-leetcode-solution/F12,打开开发者工具,清除会话记录,然后刷新网页下载该文件,内容如下:获取ts文件名称筛选出以“.ts”结尾的行有些情况下可能是以其他格式的文件,比如png,下载后修改后缀即可或者筛除以“#”开头的行...原创 2020-08-31 16:32:41 · 3500 阅读 · 0 评论 -
获取淘宝优惠券
经常看到别人在淘宝买东西可以领到好多优惠券,我也想要啊,于是搜刮全网信息,各种百度,终于梦想实现了,哈哈哈哈。。。好开心,今天分享给大家。原创 2020-07-07 16:12:09 · 2563 阅读 · 5 评论 -
Python 爬取考研调剂计划余额信息
今年由于疫情原因,考研复试、调剂纷纷推迟,时至5月20日,才开通考研调剂系统但是调剂信息量非常大,毕竟中国大学多到数不清,而且一所学校不止一条调剂信息,可想而知,信息量有多大。虽然系统有一部分筛选条件,但是这些筛选条件可能依然不能满足需求,这就需要把所有可能需要的数据爬取下来,进行进一步的筛选。1 前期工作打开研招网,并进行登录:https://yz.chsi.com.cn/点击网上调剂此时就可以根据条件进行查找调剂信息在专业的地方可以输入你想要查询的专业,比如“数学”,然原创 2020-05-24 14:14:15 · 3043 阅读 · 0 评论 -
scrapy框架 - 基础概念和流程
目标了解学习scrapy的目的 能够说出异步和非阻塞的区别 掌握scrapy的流程1 为什么要学习scrapy通过前面的学习,我们已经能够解决90%的爬虫问题了,那么scrapy是为了解决剩下的10%的问题么,不是,scrapy框架能够让我们的爬虫效率更高那么剩下的10%怎么办呢?在课堂上我们学习的是通用的爬虫技能和爬虫方法,剩下的10%大家可能以后都不会遇到2 什么是s...原创 2018-12-12 09:21:36 · 1141 阅读 · 1 评论 -
动态导入模块
目标掌握模块的动态导入的方法 完成对现有代码的重构1 目前代码存在的问题通过前面的代码编写,我们已经能够完成大部分的任务,但是在main.py 中的代码非常臃肿,对应的我们可以再settings.py 配置哪些爬虫,管道,中间件需要开启,能够让整个代码的逻辑更加清晰2 模块动态导入的方法利用importlib.import_modle能够传入模块的路径,即可即可实现根据模块的位...原创 2018-12-22 20:08:39 · 1205 阅读 · 0 评论 -
crontab爬虫定时启动
目标掌握crontab的使用1 crontab的安装和介绍2 crontab在爬虫中的使用2.1 使用流程把爬虫启动命令写入.sh 文件 给.sh脚本添加可执行权限 把.sh 添加到crontab脚本正2.2 myspier.sh例子 执行命令写入脚本 其中>>表示重定向,把print等信息导入log中 2>&1表示把标准错误作为...原创 2018-12-17 18:43:54 · 1360 阅读 · 0 评论 -
scrapy_redis实现分布式爬虫
目标掌握scrapy_redis实现分布式爬虫的方法 掌握scrapy_redis中crawlspider类的分布式爬虫1 RedisSpider1.1 分析demo中代码通过观察代码:继承自父类为RedisSpider 增加了一个redis_key的键,没有start_urls,因为分布式中,如果每台电脑都请求一次start_url就会重复 多了__init__方法,该方...原创 2018-12-17 18:36:56 · 1276 阅读 · 0 评论 -
Windows中python3.6下scrapy框架的安装
一、首先考虑使用最简单的方法安装pip install scrapy如果命令提示 error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tool...原创 2018-12-11 17:42:27 · 1214 阅读 · 0 评论 -
实现项目中传入多个中间件
目标完成代码的重构,实现多个中间件的效果1 为什么需要多个中间件不同的中间件可以实现对请求或者是响应对象进行不同的处理,通过不同的中间件实现不同的功能,让逻辑更加清晰2 在项目文件夹中创建middlewares文件项目文件夹中的spider_middlewares.py:class TestSpiderMiddleware1(object): def process...原创 2018-12-22 19:45:16 · 1319 阅读 · 0 评论 -
实现多个管道
目标实现对引擎的修改,达到数据通过多个管道的目的1 为什么需要多个管道同爬虫文件一样,不同的爬虫可能需要不同的管道文件,因此管道文件需要在项目中进行实现2 项目文件夹中实现管道文件在项目文件夹下建立pipelines.py文件,不同在于:这里的process_item必须把item对象最后再返回回来,因为是多个管道文件的设置了 需要增加一个参数,也就是传入爬虫对象,以此...原创 2018-12-22 19:42:01 · 1615 阅读 · 0 评论 -
多爬虫实现之三 -- 多爬虫文件
目标优化现有的爬虫结构,实现同时开始执行多个爬虫1 为什么需要优化现有的爬虫结构当爬虫比较少的时候,我们的项目结构相对合理,但是当要抓取的网站比较多的时候,可以借鉴scrapy的方法,把不同网站的爬虫分别在不同的py文件中编写,之后放在一个目录下;同时,我们很多时候还希望能够有同时启动项目中的所有的爬虫2 将多个爬虫类分离为多个爬虫文件爬虫文件为了解耦合,应将每个站点的爬虫写为单...原创 2018-12-22 19:39:56 · 1385 阅读 · 0 评论 -
多爬虫实现之二 -- 爬虫实现多个解析函数
目标完成spider中如果解析函数调用的封装 掌握getattr的方法 完成通过meta在不通过的解析函数中传递数据的方法1. 爬虫实现多个解析函数的意义2 响应对象的解析方法封装为response对象封装xpath、正则、json、等方法和属性,以支持对数据的解析和提取# scrapy_plus/http/response.pyimport reimport js...原创 2018-12-22 19:37:54 · 1488 阅读 · 0 评论 -
多爬虫实现之一 -- 多请求实现
目标实现在框架中能够发送多个start_url的请求 实现对_start_engine方法功能的拆分重构 掌握yield和生成器的使用方法1 需求分析在发送关于start_url中的请求的时候,往往我们的请求并不是只有一个,而且在解析了响应之后,可能需要继续构造请求并且发送,那么对应的需要在引擎中进行修改。多请求实现分析:2 项目中实现爬虫文件 在main.py同级...原创 2018-12-22 19:35:30 · 1516 阅读 · 0 评论 -
去重原理
目标掌握去重的方法 完成代码的重构,实现去重1 去重的理解其实就只是对以往数据进行一个比对,判断是否已经存在可大致分为:对原始数据比对、对利用原始数据生成的特征值进行比对两种方式原始数据比对很好理解,就是比对的时候参照值就是原始数据;而利用特征值比对,比如最典型的就是利用原始数据生成一个指纹,比对的参照值就是这个指纹,不是原始数据本身,主要应用于单个原始数据比较大的情况,另外一...原创 2018-12-22 20:09:32 · 2040 阅读 · 0 评论 -
利用线程池实现异步
目标掌握线程池的使用 使用多线程重构代码1 异步任务分析:1.1. 在引擎中,实现的主要功能如下图上面的方框中是关于start_urls中的请求处理 下面的方框中是一个请求从调度器取出请求,进行下载之后交给爬虫解析再交给管道的过程 在以上两个过程中,他们之间没有直接的联系,都可以通过异步多线程的方式分别实现,加快程序执行的速度1.2 那么具体该如何实现该逻辑multip...原创 2018-12-22 20:14:38 · 2259 阅读 · 0 评论 -
使用gevent的Pool实现异步并发
目标掌握gevent中Pool基本使用 实现代码的重构,使用gevent来进一步提高效率1 为什么使用gevent对于I/O密集型任务,gevent能对性能做很大提升的,协程的创建、调度开销都比线程小的多。2 通过配置文件设置属性,来判断所使用的异步方式# 异步方式 thread、coroutineASYNC_TYPE = 'coroutine'3 让gevent的...原创 2018-12-22 20:15:42 · 7199 阅读 · 0 评论 -
Chromedriver插件的安装
Chromedriver插件下载地址:https://npm.taobao.org/mirrors/chromedriver最简单的安装方式是:解压后把bin目录下的可执行文件移动到环境变量下,比如/usr/bin或者是/usr/local/bin下面注意:Chromedriver和电脑上的chrome版本有对应关系,建议使用最新的Chromedriver版本并且更新到chrome浏览器...原创 2019-04-03 17:39:43 · 3039 阅读 · 0 评论 -
爬取全国各大院校2019考研调剂信息
信息来源:全国各大院校2019考研调剂信息汇总(持续更新)代码实现:# kaoyan.py# -*- coding: utf-8 -*-from copy import deepcopyimport scrapyfrom scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpid...原创 2019-02-16 16:08:03 · 3366 阅读 · 2 评论 -
Spider、CrawlSpider、RedisSpider代码区别
Spider: class BookSpider(scrapy.Spider): name = 'book' allowed_domains = ['suning.com'] start_urls = ['https://book.suning.com/'] def parse(self, response): pass CrawlSpi...原创 2019-02-16 14:39:35 · 1965 阅读 · 0 评论 -
爬虫提高知识总结
selenium如何使用功能:请求页面,提取数据,能够执行其中的jsfrom selenium import webdriverdriver = webdriver.PhantomJS() # 实例化driverdriver.get(url) # 发送请求driver.quit() # 关闭浏览器selenium定位元素的方法find_element # 返回元素...原创 2018-12-17 22:54:11 · 1231 阅读 · 0 评论 -
框架升级 -- 断点续爬设计原理及其实现
目标理解断点续爬的内涵 理解分布式爬虫中请求丢失的情况 理解使用备份队列保留请求的过程 完成代码的重构,解决请求丢失的请求1 断点续爬设计分析 断点续爬设计原理介绍: 只实现持久化存储队列完成断点续爬可能出现的问题: 现有断点续爬方案的问题解决方案分析一: 现有断点续爬方案的问题解决方案分析二: 2 断点续爬无丢失方案的实现 断点续...原创 2018-12-23 10:31:22 · 2985 阅读 · 2 评论 -
框架升级 -- 增量爬虫设计原理及其实现
目标理解增量式爬虫的原理 完成增量式爬虫的实现1 增量爬虫设计原理增量抓取,意即针对某个站点的数据抓取,当网站的新增数据或者该站点的数据发生了变化后,自动地抓取它新增的或者变化后的数据设计原理:1.1 实现关闭请求去重为Request对象增加属性filter# scrapy/http/reqeust.py'''封装Request对象'''class Requ...原创 2018-12-23 10:27:11 · 2030 阅读 · 0 评论 -
框架升级 -- 分布式爬虫设计原理及其实现
目标理解分布式爬虫的原理 理解如何通过redis构建一个队列 完成代理的重构,实现分布式1 分布式爬虫原理分布式爬虫设计原理:多台服务器同时抓取数据,请求和指纹存储在同一个redis中2 实现方案利用redis实现队列注意pickle模块的使用:如果将对象存入redis中,需要先将其序列化为二进制数据,取出后反序列化就可以再得到原始对象 接口定义一致性:利用re...原创 2018-12-23 10:24:57 · 1377 阅读 · 0 评论 -
scrapy框架 - 入门使用(二)
目标掌握如何构造和发送请求 掌握Item的使用 掌握meta参数的使用1 scrapy实现翻页请求对于要提取如下图中所有页面上的数据该怎么办?回顾requests模块是如何实现翻页请求的:找到下一页的URL地址 调用requests.get(url)思路:找到下一页的url地址 构造url地址的请求,传递给引擎1.1 实现翻页请求 使用方法 在获取到...原创 2018-12-12 16:20:29 · 1019 阅读 · 0 评论 -
scrapy框架 - 入门使用(一)
目标掌握如何创建项目 掌握如何创建爬虫 熟悉创建项目后每个文件的作用 掌握pipeline的使用 掌握scrapy中logging的使用1 scrapy项目实现流程 创建一个scrapy项目:scrapy startproject mySpider 生成一个爬虫:scrapy genspider itcast "itcast.cn 提取数据:完善spider...原创 2018-12-12 13:40:22 · 1007 阅读 · 0 评论 -
框架中实现配置文件
目标完成项目和框架中配置文件的编写和使用 理解python中import内容的顺序1 实现框架的默认配置文件在scrapy_plus下建立conf包文件夹在它下面建立default_settings.py:设置默认配置的配置import logging# 默认的日志配置DEFAULT_LOG_LEVEL = logging.INFO # 默认等级DEFAULT_LO...原创 2018-12-22 19:31:57 · 1225 阅读 · 0 评论 -
scrapy_redis实现增量式爬虫
目标了解scarpy_redis的概念和功能 了解scrapy_redis的实现流程 掌握scrapy_redis增量式爬虫的实现方法1 scrapy_redis是什么Scrapy_redis : Redis-based components for Scrapy.Github地址:https://github.com/rmax/scrapy-redis在这个地址中存在三个d...原创 2018-12-16 18:47:57 · 3888 阅读 · 2 评论 -
使用Python代码下载网易音乐歌曲
刚刚写了一堆,最终放弃了,后来百度查找到一个接口,http://music.163.com/song/media/outer/url?id=这里填歌曲id.mp3这个URL就可以下载了,现在再来做一次!根据歌单id下载歌曲import osimport reimport requestsfrom scrapy.selector import Selectorclas...原创 2020-05-26 09:25:03 · 6665 阅读 · 4 评论 -
爬虫提高 - 2 - selenium的使用
1 什么是seleniumSelenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏2 PhantomJS的介绍PhantomJS 是一个基于Webkit的“无界面”(headless)浏览器,...原创 2018-12-09 09:07:31 · 1786 阅读 · 1 评论 -
scrapy的深入使用
目标认识scrapy的debug信息 知道scrapy shell如何使用 认识setting中的配置一起配置的使用1 认识scrapy的debug信息每次程序启动后,默认情况下,终端都会出现很多的debug信息,那么下面我们来简单认识下这些信息2 scrapy shell的使用scrapy shell是scrapy提供的一个终端工具,能够通过它查看scrapy中对象的属...原创 2018-12-13 16:46:22 · 1415 阅读 · 0 评论 -
使用线程 - 进程 - 线程池 - 协程池实现高效爬虫
本次以爬取糗事百科段子为例,页面的URL是:http://www.qiushibaike.com/8hr/page/1理论基础详见:https://blog.csdn.net/apollo_miracle/article/details/84881598普通爬虫代码实现:import timefrom pprint import pprintimport requestsfro...原创 2018-12-12 22:34:53 · 1374 阅读 · 0 评论 -
requests模块的使用
1 学习目标requests模块的认识 requests发送get请求 requests获取响应数据 requests发送带headers的请求 requests发送带参数的请求 requests发送POST请求 requests使用代理 requests处理cookie2 requests模块的入门使用2.1 为什么要重点学习requests模块,而不是urllibr...原创 2018-12-03 16:18:43 · 2113 阅读 · 0 评论 -
数据的提取方法 - 1
1 学习目标数据提取的基础概念和数据分类 json模块的复习 正则表达式的复习 认识xml xpath的学习 LXML类库的学习2 数据提取的概念和数据的分类2.1 什么是数据提取简单的来说,数据提取就是从响应中获取我们想要的数据的过程2.2 爬虫中数据的分类结构化数据:json,xml等 处理方式:直接转化为python类型 非结构化数据:HTML ...原创 2018-12-05 18:59:16 · 4668 阅读 · 0 评论 -
爬虫提高 - 1 - 常见的反爬手段和解决思路
1 明确反反爬的主要思路反反爬的主要思路就是:尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。浏览器先请求了地址url1,保留了cookie在本地,之后请求地址url2,带上了之前的cookie,代码中也可以这样去实现。很多时候,爬虫中携带的headers字段,cookie字段,url参数,post的参数很多,不清楚哪些有用,哪些没用的情况下,只能够去尝试,因为每个网站都是不相...原创 2018-12-08 17:58:01 · 1186 阅读 · 0 评论 -
爬虫入门知识总结
爬虫的概念爬虫就是:模拟浏览器发送网络请求,获取请求响应爬虫的分类聚焦爬虫:针对特定网站的爬虫通用爬虫:搜索引擎的爬虫爬虫的流程url ---> 发送请求,获取响应 ----> 提取数据 ---> 保存获取响应 ---> 提取url地址,继续请求浏览器的请求过程浏览器获取的数据包含:url地址对应的响应+js+css+jpg爬虫会获取...原创 2018-12-08 14:05:59 · 1149 阅读 · 0 评论 -
数据的提取方法 - 2 - 多线程和多进程
1 学习目标多线程和多进程爬虫的学习2 更快的爬虫实现2.1 爬取糗事百科段子页面的URL是:http://www.qiushibaike.com/8hr/page/1思路分析: 确定url地址 url地址的规律非常明显,一共只有13页url地址 确定数据的位置 数据都在id='content-left'的div下的div中,在这个区域,url地址...原创 2018-12-07 17:33:16 · 1277 阅读 · 0 评论 -
chrome浏览器使用方法介绍
目标掌握chrome在爬虫中的使用1. 新建隐身窗口为什么需要新建隐身窗口在打开隐身窗口的时候,第一次请求某个网站是没有携带cookie的,和代码请求一个网站一样,不携带cookie。这样就能够尽可能的理解代码请求某个网站的结果;除非数据是通过js加载出来的,不然爬虫请求到的数据和浏览器请求的数据大部分时候都是相同的2. chrome中network的更多功能2.1 ...原创 2018-12-04 18:42:08 · 1757 阅读 · 0 评论 -
爬虫框架开发分析
目标明确什么是框架 了解实现框架的好处 了解框架思路的来源 回顾并掌握scrapy的模块的作用 回顾并掌握scrapy的数据的传递过程 能够说出自己要实现的框包含的模块和模块的作用 掌握模块之间的关系 实现自己框架的代码结构1 了解框架1.1 什么是框架框架是为了为解决一类问题而开发的程序,框架两个字可以分开理解,框:表示指定解决问题的边界,明确要解决的问题;架...原创 2018-12-19 19:41:32 · 1334 阅读 · 0 评论 -
框架的雏形实现
目标完成request模块的基础封装 完成respons模块的基础封装 完成item模块的基础封装 完成spider模块的封装 完成调度器模块的封装 完成下载器模块的封装 完成管道模块的封装 完成引擎模块的封装 了解set.py的编写 掌握制作模块的方法 熟悉框架的执行过程 掌握框架的启动方法 理解中间件的用途 熟悉中间件在框架逻辑中的位置 能够编写中间件模块1 ...原创 2018-12-19 19:58:17 · 1243 阅读 · 0 评论 -
网易音乐歌曲下载
1 下载单个歌曲1.1 下载歌曲打开网易云音乐官方网站:https://music.163.com/ 首先点击歌单,随机选一个自己喜欢的歌单打开右击打开开发者工具(勾选Preserve log选项)点击歌曲标题前边的播放按钮(点击Size按钮,寻找歌曲资源(Size最大))点击打开,复制歌曲url粘贴到搜索框,如图所示点击最右侧那三个点就可以免费下载了,...原创 2018-12-26 19:04:15 · 3533 阅读 · 0 评论