![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python爬虫
文章平均质量分 76
运维家
努力从一个小菜鸟,变成一个大菜鸟!
展开
-
python代码打包编译与python代码反编译,一文带你了解
A:给我写个程序,我要实现什么什么B:写好了,给你A:运行失败了啊。。。B:我看看B:你这里没有安装xxx\xxx\xxx模块,你安装下就好了A:这么麻烦?我这是内网,下载老麻烦了B:那我不管,我给你实现了哈A:你这技术不行啊~~~B:???A:哇塞,你这个代码好厉害啊,直接运行就好了;B:哎呀,一般般了;A:你是怎么实现的啊,源代码发我一下我看看吧;B:要什么源代码,很简单了,不是不给你看,主要是我代码丢了;A:~~~以上两种情况,不知道你遇到过没有,如果有的话,看完这个文章,再遇到这样的问题,分分钟搞定原创 2022-06-24 13:34:12 · 2971 阅读 · 0 评论 -
python爬虫-34-scrapy框架入门,scrapy架构模块功能认识
我们知道,写一个爬虫是比较费劲的,比如说发起请求、数据解析、反反爬虫机制、异步请求等。如果我们每次都手动去操作,就很麻烦。这个框架已经把一些基础的内容封装好了,我们可以直接来使用,非常方便。我们通过下面两个图,来简单有个认识;可以个上图看到,也是有很多组件组成的,那么我们分别看下每个组件的作用是什么吧;:框架的核心部分。负责在和、、中间通信、传递数据等。:发送需要爬取的链接给引擎,最后引擎把其他模块请求回来的数据再发送给爬虫,爬虫就去解析想要的数据。这个部分是我们开发者自己写的,因为要爬取哪些链接,页面中的原创 2022-06-22 09:44:21 · 255 阅读 · 0 评论 -
python爬虫-32-python字体反爬,网页看到的和实际下载的不一致(理论)
当我们爬取网站过多的时候,是不是会发现一种情况,就是说明明在网页看到了实际的数据,但是当你使用爬虫爬取下来之后,数据就变成乱码了,识别不到是什么内容。比如说我们看到了网页的数据是:价钱:100/元但是当我们使用爬虫技术获取到该页面的代码之后,原来能看到的数据看不到了,是乱码了,且我们通过所有常用的编码格式,都无法识别,这就是这个网站的开发者为了数据保密而自行创建的一种字体。而我们电脑并没有存储这个字体库,所有无法识别到而导致的乱码,那么我们如果需要将乱码转换成明文,我们首先需要了解下如何创建字体。这是一种什原创 2022-06-21 09:41:53 · 574 阅读 · 0 评论 -
python爬虫-31-python图形验证码进阶,识别中文(二)
先来看下默认的情况下识别中文是什么样子的呢,比如我们要识别下图:然后我们写出如下代码:运行结果:可以看到并没有识别出来,是乱码;通过识别图形中文乱码,是因为你安装的时候没有选择合适的语言进行安装,上一文中我们是直接默认下一步安装的,且安装版本是,这个版本在安装的时候确实可以选择其他语言进行支持,但是你,并。且官网也没有对应该版本的语言支持包,所以我这里重新找了一个****版本的程序包进行安装,这个软件包是没有问题的;获取软件包的方式为:微信公众号“运维家”,后台回复:软件包即可获取软件包的网盘下载地址了原创 2022-06-21 09:27:47 · 828 阅读 · 0 评论 -
python爬虫-30-python之图形验证码技术
这里我们使用软件来进行识别,这个需要提前在你自己的电脑上安装,而后通过调用该软件来进行识别,不同的平台,比如、、的安装,需要下载适合自己平台的软件来安装,安装方式大同小异,我这里使用的是平台;软件下载地址为:访问以上地址之后,根据自己的需要,下载不同的版本即可,需要注意的是安装路径最好不要存在中文字符。需要我们先配置个环境变量,只需要将的安装目录添加到环境变量即可;然后我们在命令行执行如下命令:例如:识别的图片为:代码:然后他就会将识别结果输出到这个文本当中,我们看下这个文本中的内容:3、pytho原创 2022-06-17 10:00:26 · 1502 阅读 · 0 评论 -
python爬虫-29-selenium进阶操作,还不赶紧收藏起来
有时候我们需要通过获取来进行一些别的操作,这个时候我们如何对进行相关操作呢?运行之后结果如下:1.2、获取某一个1.3、删除所有的1.4、删除某个2、selenium的页面等待什么是页面等待,为什么要有一个页面等待呢,你想一下哈,当你访问某个网站的时候,他是不是需要有一个加载的过程,那么如果在加载过程中你就去获取某个元素,或者某个路径了,那么他是肯定无法获取到的;但是呢,本身这个网站是存在相关数据的,只是因为没有加载完全,从而导致的该问题,那有同学说了,我们可以通过的方式,让他休眠一会儿,原创 2022-06-17 09:54:09 · 269 阅读 · 1 评论 -
python爬虫-28-基于python和Selenium,让你控制浏览器自动化操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yekx1XeT-1655344437204)(https://mmbiz.qpic.cn/mmbiz_jpg/Nwec3GEnHPFcn4L37IthHd43Zhhg6Ioj852uvQYWAUsWqI9Pdo9pcibPibhGwic3IwuJrXrQZrnp4AicibZuhldpyXQ/640?wx_fmt=jpeg)]打开浏览器就是初始化一下,然后发起一个请求,他就会自动调用浏览器,并访问这个地址:2、selenium原创 2022-06-16 09:54:43 · 288 阅读 · 0 评论 -
python爬虫-27-python之Selenium入门,动态网页抓取
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HhwW6kOo-1655344062971)(https://mmbiz.qpic.cn/mmbiz_jpg/Nwec3GEnHPGwxyBtv4ZSGxr1qQicsC9UlB84675Kkxk47S4gWrX3sFvllONGt6NJicCEqVyhEHCSt7jhItNYEHaQ/640?wx_fmt=jpeg)]动态网页就是使用了技术的前端;即(异步和)在 2005年被提出的新术语,用来描述一种使用现有技术集合的‘新’方原创 2022-06-16 09:48:12 · 205 阅读 · 0 评论 -
python爬虫-25-python多线程安全队列Queue详解
1、python之Queue介绍===================Python中的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先进先出)队列Queue,LIFO(后入先出)队列LifoQueue。这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么都做完),能够在多线程中直接使用。初始化Queue(maxsize):创建一个先进先出的队列;初始化LifoQueue(maxsize):创建一个先进后出的队列;qsize():返回队列的大小;empty():判断队列是否为空;ful原创 2022-06-15 10:05:27 · 1335 阅读 · 0 评论 -
python爬虫-24-python多线程详解(3)生产者和消费者模式
生产者和消费者是多线程开发中经常遇到的一个模式。生产者专门用来生产一些数据,然后存放到一个变量中。消费者再从这个变量中取出数据进行消费。因为中间经常是一些全局变量,故而经常使用锁来保证数据的完整性。我们通过一个的例子来认识下。首先,我们假设有一个家庭,初始资金有1000元,有3个人在挣钱,两个人在花钱,挣的钱我们就存到银行,消费的也从银行消费。就这样一个简单的例子来认识下生产者和消费者吧。(我们假设时间短一点儿哈,假设能挣钱5次吧,这样子比较简单直观。)我们首先简简单单先来写个小框框,如下:然后我们稍微完原创 2022-06-14 11:12:34 · 1942 阅读 · 0 评论 -
python爬虫-23-python多线程详解(2)继承类,以及多线程锁
1、python之多线程threading封装==========================我们可以将上一篇的代码进行封装,封装之后的代码:运行结果如下:我们可以看到,通过重写的的方法,我们也成功的实现了多线程,且更加优雅。我们想一个问题哈,当你这个代码中有一个全局变量 同时被两个线程进行调用的时候,我们该如何保证这个变量保持一个先后顺序来被调用呢,因为当你启动了两个线程之后,我们是无法控制线程的运行顺序的,那么在这样子的前提下,是不是就存在那么一种数据错乱的可能性呢。例如,当全局变量被线程调用的原创 2022-06-14 11:06:14 · 459 阅读 · 0 评论 -
python爬虫-22-python多线程详解(1)
1、未使用python多线程技术都说多线程是效率的提高,那么我们来做个对比吧,首先来看看未使用多线程之前是什么样子的吧,直接上代码:运行结果如下:从上面的结果来看,他运行了秒钟,那么我们使用多线程之后看看呢;运行结果如下:从上面我们就可以看到他的最直观的时间变化,本来一个人干的活儿,现在通过的多线程技术,变成了两个人干,这样子的话就减少了一半的时间。方法:放到上面的代码中之后,总体代码如下:剩余内容请转至VX公众号 “运维家” ,回复 “183” 查看。------ “运维家” ,回复 “183”原创 2022-06-13 09:25:51 · 267 阅读 · 0 评论 -
python爬虫-21-三分钟python读写mysql数据库
1、mysql数据搭建这里可以参考下之前的文章,如下:往期推荐[centos7/linux编译安装_mysql_8最新版](http://mp.weixin.qq.com/s?__biz=Mzg3NjY2NDQ5MA==&mid=2247483779&idx=1&sn=902a2b620089ce8e4583aa61dcddf642&chksm=cf2f8246f8580b50a5f1120b94dd721e915136118e862ab65facd3033156eeaab1707fcb93d9&scene原创 2022-06-13 09:18:00 · 237 阅读 · 0 评论 -
python爬虫-20-python如何操作excel,在excel中读取和写入数据
1、介绍本身是有很多功能的,比如说格式调试,图表展示,公式计算等内容,但是对于我们在爬虫中,我们关注的仅仅是纯数据,其他的格式内容,咱们暂时不提。我们使用操作的时候,我们要使用两个模块,分别是和,下面我们就分别使用下的命令来安装下这两个模块。3、python读取excel表格3.1 创建测试文件首先我们先创建一个名字为的测试文件,以供我们使用,文件如下:在这里有好几种方式,我们分别来尝试下;(1)获取所有的运行结果如下:(2)根据索引获取运行结果如下:从上面我们可以看到,我们根据索引为“0”,原创 2022-06-12 18:56:52 · 2993 阅读 · 0 评论 -
python爬虫-19-CSV文件之python数据存储
泛指具有以下特征的任何文件:纯文本,使用某个字符集,比如I、、或;由记录组成(典型的是每行一条记录);每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);每条记录都有同样的字段序列。开头是不留空,以行为单位;可含或不含列名,含列名则居文件第一行;一行数据不跨行,无空行;以半角逗号(即,)作分隔符,列为空也要表达其存在;列内容如存在半角引号(即"),替换成半角双引号(“”)转义,即用半角引号(即"")将该字段值包含起来;文件读写时引号,逗号操作规则互逆;内码格式不限,可原创 2022-06-12 18:48:43 · 872 阅读 · 0 评论 -
python爬虫-18-python与json的爱恨情仇
1、json支持的数据格式2、python字典和列表转换成json方法:示例:运行结果如下:有人说了,看起来不是差不多嘛,但是我们可以发现原来是类型,现在变成了,且所有的单引号都变成双引号了嘛。方法:示例:运行结果如下:同上面正好相反哈,正好是将的模式,变成了的模式,且双引号变成了单引号。方法:示例:文件中的内容如下:5、从文件中读取json格式数据方法:示例:运行结果如下:我们可以发现,虽然文件中存放的是类型的字符串,其实当使用方法读取之后,他依旧会变成语言的或者类型,这里需原创 2022-06-04 21:37:35 · 125 阅读 · 1 评论 -
python爬虫-17-python之正则表达式,以最快的速度获取有效数据(下)
示例:输出结果如下:2、python匹配以什么什么结尾方法:示例:输出结果如下:3、python匹配多个表达式或者字符串方法:示例:输出结果如下:4、python贪婪模式和非贪婪模式贪婪模式:正则表达式会匹配尽量多的字符,默认是贪婪模式。非贪婪模式:正则表达式会尽量少的匹配字符。贪婪模式示例:输出结果为:非贪婪模式示例:输出结果如下:5、python找出所有满足条件的内容方法:示例:输出结果如下:6、 python替换字符串方法:示例:输出结果如下:7原创 2022-06-04 21:30:18 · 276 阅读 · 0 评论 -
python爬虫-16-python之正则表达式,以最快的速度获取有效数据(上)
老话说得好:世界上分为两种人,一种是会正则的,一种是不会正则的。1、介绍又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在pythonl中就内建了一个功能强大的正则表达式引擎re,我们现在就开始该模块的学习。2、pyhton匹配某个字符串从指定字符串第一个字符开始匹配,如果第一个字符没有匹配的就会报错。方原创 2022-05-31 11:05:49 · 267 阅读 · 0 评论 -
python爬虫-14-python获取数据之BeautifulSoup4库(下)
这里我们主要梳理下思路,整理下和BeautifulSoup有关的内容。1、find和find_all相同点在提取数据的时候,第一个参数是标签的名字,如果后面还想有其他参数作为过滤的方式而存在,可以通过关键字的形式来传输,比如'class_'=red,如果你的关键字不是python关键字的话,后面是不可以添加下划线的,否则会无法筛选出来准确数据。亦或者通过attrs属性,可以将你想要用来过滤的相关内容添加进来,他是一个字典的形式;不同点find:不管你这个文件中有多少个匹配的内容,他只返回第一个匹配到的内容,原创 2022-05-30 11:13:04 · 259 阅读 · 0 评论 -
python爬虫-13-python获取数据之BeautifulSoup4库(上)
有人说了,有没有更加简单的方式来获取Html中的相关数据呢?python发言了,当然有了,且看BeautifulSoup4。1、BeautifulSoup4是干啥的BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它通过转换器实现文档导航,查找,修改文档的方式。和lxml一样,Beautiful Soup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。但是BeautifulSoup有一个不可避免的劣势,那就是它是将所有的html代码读取原创 2022-05-30 11:05:02 · 465 阅读 · 0 评论 -
python爬虫-09-python数据提取之lxml库,让你精准提取有效数据>
lxml是一种使用Python编写的库,可以迅速、灵活地处理XML和HTML,使用XPath语法来进行文件格式解析。上一篇中我们了解了如何使用XPath找到有效数据具体的定位,但是没有提起如何在Python中使用,那么本文就将Lxml和XPath进行两者结合,让你能精准的从复杂的Html代码中提取到你想要的数据。1、Lxml安装pip install lxml或者使用国内地址进行加速下载:pip install lxml -i https://p原创 2022-05-28 21:24:33 · 357 阅读 · 0 评论 -
python爬虫-08-python爬虫使用xpath准确定位到页面中的某个内容
当我们爬取网页的时候,里面的数据是杂乱的,我们实际上只需要对应页面中的某些内容,那么我们如何将其筛选出来呢?我们使用xpath就可以准确的采集到我们需要的数据,从而摒弃那些对我们“无用”的数据。1、安装xpath推荐主流浏览器:Google浏览器点击Google浏览器的扩展程序,然后再点击左上角的三个横杠,在弹出的页面中点击左下角的打开Chrome网上应用商店,如下图所示:然后在里面搜索XPath Helper,如下图所示:点击右边的安装即可,我这里是因为安装过,所以显示的是从Chrome中删除;安装完毕之原创 2022-05-27 15:58:12 · 2146 阅读 · 0 评论 -
python爬虫-07-使用request发送get和post请求
上面我们介绍了urllib模块的使用,有一个比urllib更加“人性化”的模块,那就是requests库,使用它可以更加便捷的发起各种请求。1、安装requestspip install requests2、python发送get请求(1)发送简单请求import requestsjier = requests.get('http://www.baidu.com')print(jier.text)输出为一个网页的html代码;(2)添加Headeri原创 2022-05-27 15:49:47 · 1368 阅读 · 0 评论 -
python爬虫-05-python爬虫代理,python爬虫如何携带cookie呢,本文带你掌握
1、python爬虫代理使用python爬虫高频率的访问一个固定的网站的话,容易触发该目的网站的反爬机制,将你对应的IP地址进行封禁,那么这个时候我们可以通过代理的方式,让目的网站无法识别到是哪一个IP地址访问的。(1)检测网站我们在测试的时候,如何知道我们是通过代理访问的呢?这个时候我们需要使用一个检测网站,地址如下:http://httpbin.org/这个网站就是专门用来做检测用的,他有多种访问形式,可以来返回我们所需要的不同信息;它也提供了各种访问的demo,如下:(2)有哪些好用的代理如果可以自原创 2022-05-26 20:49:06 · 991 阅读 · 0 评论 -
python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
520到了,还被女朋友问送什么礼物吗?鲜花?口红?看电影?很俗的好不好,给你女朋友一个程序员的Surprise吧,来来来,让你用代码撩妹子。啥?没有女朋友?没有女朋友更应该看了,用它来表白不香嘛?1、引言什么什么?你女朋友不懂代码?没有编译环境?这叫事儿嘛,以下你看到的所有代码,我都给你打包成电脑一键运行的exe程序,双击就完事儿。就问你女朋友喜不喜欢,文章末尾自取即可。我还在每个文件夹中写了使用说明,你确定不要吗?尤其是最后一个,非常好看哦。2、代码列表浪漫玫瑰浪漫玫瑰加爱心你中有我,我中有你浪漫小树用女原创 2022-05-20 09:21:48 · 9404 阅读 · 3 评论 -
python操作文件和目录
在python中对文件和目录的操作经常用到 os 模块和 shutil 模块。 一定要先导入 os 和 shutil 模块import osimport shutil1、获得当前python脚本工作的目录路径:os.getcwd()In [38]: import os ...原创 2019-08-19 18:48:28 · 132 阅读 · 0 评论 -
python 序列化操作
程序运行时,所有的变量都是在内存中的,例如在程序中申请一个 dict 对象,里面存储着爬取的页面的链接、页面的标题、页面的摘要等信息:d = dict(url = 'index.html', title = '首页', content = '首页') 在程序运行的过程中爬取的页面的链接会不断变化,比如把 url 改成了 secone.html,但是程序一结束或者意外中断,程序中的内...原创 2019-08-19 20:26:01 · 308 阅读 · 0 评论 -
python 多进程-基础
Python 实现多进程的方式主要有两种,一种方法是使用 os 模块的 fork 方法,另一种是使用 multiprocessing 模块。 区别:os.fork 适用于nuix/linux操作系统,不适用于windows系统,multiprocessing 跨平台。1、使用os.fork方式实现多进程 python的os模块中的fork方法。来自于nuix/lin...原创 2019-08-20 20:14:58 · 179 阅读 · 0 评论 -
python 多进程-进阶-进程池
如果需要启动大量的子进程,使用进程池批量创建子进程的方式更加常见,因为当被操作对对象数目不大时,可以直接利用multiprocessing中的Process动态生成多个进程,如果数量大,此时就应该使用Pool。 Pool 可以提供指定数量的进程供用户调用,默认大小是CPU的核数。当有新的请求提交到Pool中时,如果池还没有满,就会创建一个新的进程用来执行该请求;但是如果池中的进程...原创 2019-08-21 11:51:42 · 163 阅读 · 0 评论 -
python 多进程-进阶-进程间通信之Queue
假如创建了大量的进程,那进程间通信是必不可少的。python提供了多种进程间通信的方式,如:Queue和Pipe方法。他们两者的区别在于Pipe常用来在两个进程间通信,Queue用来在多个进程间实现通信; Queue是多进程安全的队列,可以使用queue实现多进程之间的数据传递。有两个方法:Put 和 Get 可以进行 Queue 操作: Put 方法用以插入数据到队列...原创 2019-08-21 17:16:26 · 425 阅读 · 0 评论 -
python 多进程-进阶-进程间通信之Pipe
Pipe常用来在两个进程间进行通信,两个进程分别位于管道的两端。 Pipe方法返回(conn1, conn2)代表一个管道的两个端。Pipe方法有duplex参数,如果duplex参数为True(默认值),那么这个参数是全双工模式,也就是说conn1和conn2均可收发。若duplex为False,conn1只负责接收消息,conn2只负责发送消息。send和recv方法分别是发...原创 2019-08-22 20:27:18 · 5636 阅读 · 0 评论 -
python文件读写
1、open函数用来打开文件open(name[.mode[.buffering]])只有文件名是需要输入的强制参数,然后返回一个文件对象,模式默认是读模式,默认缓冲区是无;例如:正常打开:In [2]: f = open('ceshi.txt') ...原创 2019-08-19 17:54:37 · 148 阅读 · 0 评论