Python 爬虫
文章平均质量分 55
爬虫基础
沉觞流年
博客内容仅是个人学习笔记,不是技术博客。
展开
-
python爬虫
python爬虫一、python爬虫爬虫的概念爬虫的分类:1、通用爬虫robots协议2、聚焦爬虫聚焦爬虫的工作原理二、HTTP协议1、http协议简介2、http的创建过程三、HTTPS协议1、HTTPS简介四、抓包工具1、抓包工具原理2、fiddle安装3、fiddle常见的图标4、http请求常见请求头一、python爬虫爬虫的概念通过代码从互联网上获取数据,并且对这些数据进行提取、分析、以及清洗与整合存储爬虫的分类:1、通用爬虫通用爬虫的概念:根据互联网的拓扑结构不断去爬取新的内容,然后原创 2019-06-11 23:56:52 · 295 阅读 · 0 评论 -
urllib框架
urllib框架1、 在pycharm新建爬虫项目2、 爬虫urllib框架2.1 urlopen()2.2 urlretrieve(url,filename)2.3 urlencode()2.4 添加代理来伪装成浏览器3、爬取百度图片3.1 正则3.2 这里还用到了生成器3.3 爬取美女图片1、 在pycharm新建爬虫项目新建一个python项目,可以新创一个环境变量,这个环境变量就专供爬虫的项目使用打开这个项目后,可以在项目根目录下创建一个空文件夹,比如新创一个文件夹day01,该文件夹下还原创 2019-06-11 19:43:53 · 524 阅读 · 0 评论 -
爬虫之xpath解析
爬虫之xpath解析xpath1、相关安装2、一个测试用的html页面3、xpath的相关语法xpath1、相关安装安装lxml在python Terminal终端安装pip install lxml谷歌浏览器xpath插件安装文件链接链接:https://pan.baidu.com/s/1YOeSPWFqZCrfXsC_B4ZlqQ提取码:d7st首先建一个空文件夹,将压缩包解压到此文件夹然后打开谷歌浏览器然后加载文件夹加载完后重启一下浏览器当右键检查页面的时候,使用原创 2019-06-12 19:01:06 · 468 阅读 · 0 评论 -
使用xpath解析爬取链家
使用xpath解析爬取链家爬取链家将数据存储到redis爬取链家from urllib import requestfrom time import sleepfrom lxml import etreeimport csvimport redisimport re# 1 数据抓取# 定义一个函数,用于将页码,城市等信息转化为一个Request对象def request_from(url,page,city): # 请求头 headers = { 'User-Agen原创 2020-09-05 16:31:23 · 889 阅读 · 0 评论 -
通过selenium爬取动态加载的网页
通过selenium爬取动态加载的网页爬取动态加载的网页1、selenium2、用代码操作浏览器3、爬取唯品会数据爬取动态加载的网页和爬取链家不同,链家的网页是静态加载生成的,图片和信息都可以直接爬取,然而,爬取动态加载的网页(用js从数据库动态加载进来),用前面的爬取方法就行不通了举个例子爬取唯品会的商品信息myvip .pyfrom urllib import requestfrom lxml import etreeurl = 'https://category.vip.com/su原创 2019-06-12 20:27:02 · 930 阅读 · 1 评论 -
使用selenium爬取唯品会
使用selenium爬取唯品会1、基本步骤2、通过程序控制浏览器下拉滚动条获取加载信息3、完成这个爬虫程序使用selenium爬取动态加载的网页,爬取唯品会的商品1、基本步骤首先,创建一个浏览器驱动driver,查看唯品会页面url的变化规则,确定url,这里的url可以接受中文关键字然后就是爬虫的三大步骤:数据抓取,数据解析,数据存储theVip .pyfrom selenium import webdriverfrom lxml import etreeimport reimport原创 2019-06-13 13:57:10 · 1517 阅读 · 0 评论 -
requests 库
requests 库requestsrequestsrequests是一个第三方的请求框架,基于urllib的二次封装,简化urllib中的复杂操作myRequests .pyimport requests# 1. requests的get请求 # 1) 不带参url1 = 'https://www.baidu.com/'res = requests.get(url=url1)print(res) #<Response [200]> 响应成功print(res.hea原创 2019-06-13 23:58:16 · 162 阅读 · 0 评论 -
爬虫之 requests 库爬取公交信息
爬虫之 requests 库爬取公交信息爬取公交的信息1、根据第一级页面链接获取第二级链接2、进入第二级页面链接爬取公交的信息广州公交网站https://guangzhou.8684.cn/抓取广州市所有的公交信息1、根据第一级页面链接获取第二级链接右键检查元素最初的页面的url是点击字母或数字进入下级页面时url的变化所以通过正则匹配url,拼接url2、进入第二级页面链接同样查找规律用xpath插件查找所需的内容然后进入第三级链接获取最终的信息gongjiao原创 2020-09-06 00:01:01 · 716 阅读 · 0 评论 -
requests 库错误处理
requests 库错误处理错误处理错误处理from urllib import request,errorimport requestsfrom requests import exceptions# 请求头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}原创 2019-06-14 00:26:21 · 237 阅读 · 0 评论 -
requests 库会话处理
requests 库会话处理会话处理会话处理http://www.jokeji.cn/这是一个笑话内容的网站,使用的是http协议我们知道http协议是一种无状态的协议会话处理 .pyimport requestslogin_url = 'http://www.jokeji.cn/user/c.asp'# 请求头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (原创 2020-09-06 00:11:06 · 183 阅读 · 0 评论 -
图片验证码破解
图片验证码破解图片验证码破解1、相关配置2、提取验证码图片中的内容3、引用百度AI的相关识别图片验证码破解1、相关配置图片处理工具 pip install pillo图片识别工具 pip install pytesseract图片识别工具链接链接:https://pan.baidu.com/s/1lWp3zMXLiaQhm6N8ZPu2SQ提取码:7o4c解压后安装,安装的路径最好不要有中文,记住这个路径,需要用上接下来配置这个工具,将这个工具加载到驱动中找到site-package原创 2019-06-14 19:13:59 · 1411 阅读 · 0 评论 -
破取滑动验证码
破取滑动验证码1、滑动验证码的破取步骤2、破取博客园滑动验证码1、滑动验证码的破取步骤当访问网页登陆时,除了图片验证码,有时还会遇到滑动验证码,这里以博客园为例破解思路的两大关键点:1.移动的距离 :拼图的起始位置的x坐标是固定的,所以只需要确定缺失的拼图的位置,通过缺失的拼图的位置减去拼图的起始位置就能得到移动的距离这里通过确定缺失拼图的位置的方法是图片对比找到这张图片修改其css样式然后修改下一个css属性通过寻找缺口图和无缺口的图之间像素的差异,获取滑动的距离2.按住拖动原创 2019-06-14 20:05:59 · 417 阅读 · 0 评论 -
爬取微博
爬取微博1. 首先将破解验证码的那些代码封装成一个模块2. 然后封装一个函数用于登陆3. 爬取微博1. 首先将破解验证码的那些代码封装成一个模块sliderCode .pyfrom selenium import webdriverfrom time import sleepfrom PIL import Imagefrom selenium.webdriver import ActionChains# 辅助函数1、截图def shot_img(driver): sleep(2)原创 2019-06-16 22:07:11 · 575 阅读 · 0 评论 -
多任务原理
多任务原理1、什么是多任务?2、多任务的实现机制2.1 串行:2.2 并行:2.3 并发:3、多任务的实现技术3.1 多进程3.2多线程3.3 协程1、什么是多任务?多个任务同时运行在同一个操作系统上,这种机制就是多任务。现在的操作系统大多都是采用多任务。2、多任务的实现机制2.1 串行:多个任务依次执行,前面的任务不完成后面的任务就无法开启2.2 并行:多个任务同时执行,并行系统需要有多个CPU的支持,一旦有有个新的任务产生,就会将这个任务放在一个cpu上执行,多个任务同原创 2019-06-15 17:38:37 · 1467 阅读 · 0 评论 -
多进程
多进程多进程1. 进程2. 创建子进程多进程1. 进程现在未开辟子进程,print函数和func函数在同一个进程里当程序运行起来操作系统会创建一个进程来供程序任务实现,这个进程我们称为主进程进程1 .pyfrom multiprocessing import Processfrom time import sleepimport osdef func(string): print('hello')if __name__ == '__main__': func('123')原创 2019-06-16 22:36:45 · 218 阅读 · 0 评论 -
多线程
多线程1、线程创建的三种方法1.1 守护线程1.2 非守护线程1.3 自定义线程2、线程安全2.1 线程冲突2.2 线程的同步2.3 资源的加锁3、信号量1、线程创建的三种方法线程 .pyimport threadingfrom time import sleep# 定义一个函数,用于绑定到子线程中实现子任务def run(arg): # 线程名 name = threading.current_thread().name print("当前线程为:%s"%name) for i原创 2019-06-17 12:56:47 · 189 阅读 · 0 评论 -
协程
协程协程1、greenlet+switch2、gevent3、gevent + monkey协程1、greenlet+switch采用greenlet+switch机制来实现协程greenlet用于创建协程,switch进行协程之间的切换某个协程在执行的过程中可以随时被其他协程通过switch来打断,转而去执行其他协程,当前的中现场会被保留,一旦中断的协程再次获得cpu会恢复现场然后从中断处继续执行这种机制下的协程是串行的,不能并发举些例子说明一下采用greenlet+switch机制来实原创 2019-06-17 20:21:21 · 153 阅读 · 0 评论 -
生产者与消费者模型
生产者与消费者模型1、生产者与消费者模型1.1 生产者与消费者1.2 互斥锁1.3 条件锁2、队列1、生产者与消费者模型大家应该都有过去小吃摊吃东西的经历,商家的资源是有限的商家是生产者,我们是消费者,商家要考虑会不会浪费了,当产品数量少于10的时候就开始生产只要有商品,消费者就可以消费,消费者要消费多少也由消费者确定1.1 生产者与消费者这里定义两个生产者(老板和老板娘),5个消费者import threadingfrom time import sleepproducts = 0原创 2019-06-17 00:25:04 · 159 阅读 · 0 评论 -
爬取穷游网
爬取穷游网1、分析网页url规律2、定义函数请求每个地区的页数3、定义函数请求每个地区的页面信息4、数据的存储1、分析网页url规律进入穷游网,找到行程助手,点击进去然后找到搜索,随便搜索一下,发现地址栏的url支持中文关键字查看url规律以日本为例,url需要变动的是页码数和关键字这个爬虫程序,用进程爬取地区,用协程抓取地区的每一个页面2、定义函数请求每个地区的页数使用xpath匹配页数,使用正则匹配数字,获取最大页数qiongyou_1 .pyimport multipr原创 2019-06-17 21:16:32 · 980 阅读 · 0 评论 -
反爬之代理服务器
反爬之代理服务器1、代理服务器的引入2、用代码实现代理3、代理池1、代理服务器的引入当爬取一个网站太过频繁的时候,可能会遇到相应的反爬机制如果爬取了某个网站太多数据,可能会遇到ip被网站限制,这时候就要引入代理服务器的方式解决这里选择代理精灵这个网站,西瓜代理也行,但比较贵http://http.zhiliandaili.cn可以选择取注册一个账号有免费领取的机会使用点击这里点击生成API链接然后把这条链接输入到浏览器地址栏中这些就是生成的代理怎么查看自己的公网ip呢?浏览器原创 2019-06-18 00:18:43 · 291 阅读 · 0 评论 -
通过代理爬取穷游网
通过代理爬取穷游网1、通过代理池获取代理2、在穷游网爬虫文件中添加代理1、通过代理池获取代理proxiespool .py# 1、代理的存储(本地文件、数据库) 2、代理定期更新 3、代理池的定期清洗 4、代理质量检验import requestsimport redisimport jsonimport re# 定义一个函数,用于获取代理def get_proxies(url,headers): res = requests.get(url=url,headers=head原创 2019-06-22 10:24:01 · 377 阅读 · 0 评论 -
闭包、装饰器、回调函数知识回顾
闭包、装饰器、回调函数知识回顾1. 闭包1.1 函数的执行过程1.2 闭包1.3 闭包的使用 装饰器2、回调函数1. 闭包在一些解释性语言(JavaScript、python、PHP等)中,在一个函数中可以嵌套另外另外一个函数的,如果内部函数引用了外部函数的变量,并且外部函数把内部函数的函数名做为了返回值,这就形成了一个闭包1.1 函数的执行过程在像python这样的解释性语言中,函数可以看成是一个特殊的变量,这个变量中保存的是函数的入口地址比如我定义了一个函数func1,函数func1这个名原创 2019-06-22 15:02:33 · 329 阅读 · 0 评论 -
Scrapy 框架
Scrapy 框架1、框架简介1.1 Scrapy 框架构成1.2 Scrapy结构2、Scrapy 框架安装3、用Scrapy 框架创建项目3.1 用Scrapy 框架创建第一个项目3.2 项目流程与内容1、框架简介Scrapy 框架是一个爬虫框架,提取结构性的数据。其可以应用在数据挖掘,信息处理等方面。提供了许多的爬虫的基类,帮我们更简便使用爬虫。基于Twisted该框架是一个第三方的框架,许多功能已经被封装好(比如:下载功能)1.1 Scrapy 框架构成Scrapy 框架由五部分构成:原创 2019-06-18 21:27:25 · 720 阅读 · 0 评论 -
使用Scrapy框架爬取百思不得姐
使用Scrapy框架爬取百思不得姐1、解析数据2、数据的存储2.1 方式一:放入到对应的csv、json或者xml文件中2.2 方式二:管道通过Scrapy框架创建项目后,接下来对项目进行操作,爬取相应的内容爬取段子的作者,图片,和文字内容scrapy自带xpath模块和css选择模块两种解析方式1、解析数据进入网站,右键检查元素,使用xpath解析信息,获取相应的模块代码使用xpath解析信息就不用和以前一样导入etree了,Scrapy框架已经封装好了尝试是否能获取jrlist的信息,在原创 2019-06-19 00:45:52 · 192 阅读 · 0 评论 -
scrapy框架之post请求
scrapy框架之post请求1、post请求2、通过scrapy框架用爬虫发起post请求3、使用Scrapy框架破解验证码1、post请求首先从浏览器打开百度翻译,去抓一下接口右键检查,一开始是network是什么都没有的,如果有,那是你操作步骤快了,抓的信息是网页的信息然后随便输入一些东西,发现network中多了一些内容,这就是抓到的东西,这里的相关的信息,比如请求方式啊,状态码等等嗯~既然说到了,就简单介绍一下,当是复习了首先这第一个接口,Headers栏这里返回了四大模块:通用原创 2019-06-22 17:49:58 · 3156 阅读 · 0 评论 -
爬取蘑菇街
爬取蘑菇街1、创建爬虫项目2、中间件3、截获请求4、解析响应体4.1 首先确定需求,要爬取哪些内容,这里要用到**items .py**文件4.2 解析内容4.3 存储数据首先查看蘑菇街这个网站网站地址 https://www.mogu.com/比如爬取上衣这一栏查看网页源代码很明显,这些商品的数据是动态加载进来的,且在前端不能看到有关的json数据,以前没用框架之前是怎么处理这类事件的?用selenium方法,接下来,用scrapy框架又怎么处理呢?1、创建爬虫项目在黑屏终端输入命令原创 2019-06-24 00:20:46 · 757 阅读 · 0 评论 -
增量式爬虫
增量式爬虫增量式爬虫项目1、新建爬虫项目2、配置setting .py文件3、创建爬虫文件3.1 新建爬虫文件的时候将命令换成3.2 确定要爬取的网页的url爬取读书网信息查找url规律查看底部的导航栏右键检查元素,不能确定一共有多少页数所以引进一个新的概念 增量式爬虫增量式爬虫项目1、新建爬虫项目打开黑屏终端,找到要保存的路径,输入命令scrapy startproject DushuPro2、配置setting .py文件1 将请求头改为浏览器的请求头USER_AGENT原创 2019-06-19 19:24:33 · 328 阅读 · 0 评论 -
分布式爬虫
分布式爬虫分布式爬虫1、分布式爬虫系统2、分布式爬虫系统的工作原理2.1分布式爬虫的数据库2.2 分布式爬虫的运行流程3、依赖包安装 pip install scrapy_redis4、在setting文件中修改管道5、接下来修改dushu .py文件5.1 导入分布式爬虫类5.2 爬虫类继承scrapy_redis组件中的分布式爬虫类5.3 连接远程的redis数据库这里使用上次完成的项目 DushuPro链接:https://pan.baidu.com/s/1eNIDWgT42iN-8YOBj0IB原创 2019-06-20 11:19:06 · 410 阅读 · 0 评论 -
用分布式爬虫爬取boss直聘
用分布式爬虫爬取boss直聘1、项目的创建和相关配置1.1 创建爬虫项目1.2 配置setting .py文件2、确定需求2.1 创建爬虫文件2.2 查找url规律2.3 匹配要爬取的信息3、分布式爬虫的部署3.1 爬虫文件的修改3.2 setting .py文件的修改3.3 连接远程的redis数据库boss直聘网站网址1、项目的创建和相关配置1.1 创建爬虫项目在黑屏终端输入命令scrapy startproject Zhipin使用pycharm打开该项目前面爬取的量仅供测试,不要爬原创 2019-06-21 13:09:17 · 718 阅读 · 0 评论