爬虫ip被禁的简单解决方法,python爬虫时如何知道是否代理ip伪装成功?
随便在网上找一个查询本机公网IP的免费API接口,然后get请求一下接口,不就知道自己现在对外的IP到底是什么了吗,在百度里面搜一下本机IP,就能知道未设代理的实际IP地址,自己去操作一下吧
如何爬取网页数据?
1、URL管理
首先url管理器添加了新的url到待爬取集合中,判断了待添加的url是否在容器中、是否有待爬取的url,并且获取待爬取的url,将url从待爬取的url集合移动到已爬取的url集合
页面下载,下载器将接收到的url传给互联网,互联网返回html文件给下载器,下载器将其保存到本地,一般的会对下载器做分布式部署,一个是提交效率,再一个是起到请求代理作用
2、内容提取
页面解析器主要完成的是从获取的html网页字符串中取得有价值的感兴趣的数据和新的url列表。数据抽取比较常用的手段有基于css选择器、正则表达式、xpath的规则提取。一般提取完后还会对数据进行一定的清洗或自定义处理,从而将请求到的非结构数据转化为我们需要的结构化数据。
3、数据保存
数据保存到相关的数据库、队列、文件等方便做数据计算和与应用对接。
爬虫采集成为很多公司企业个人的需求,但正因为如此,反爬虫的技术也层出不穷,像时间限制、IP限制、验证码限制等等,都可能会导致爬虫无法进行,所以也出现了很多像代理IP、时间限制调整这样的方法去解决反爬虫限制,当然具体的操作方法需要你针对性的去研究。兔子动态IP软件可以实现一键IP自动切换,千万IP库存,自动去重,支持电脑、手机多端使用。
可以用Python编程语言做哪些神奇好玩的事情?
Python作为一种应用极为广泛的语言,几乎在任何领域都能派上用场。想做Web有Flask/Django/Tornado;想做分布式有Celery;想做手机App有Kivy;想做数据分析有Pandas;想做可视化有Matplotlib/Seaborn/Plotly/Bokeh;想做机器学习有Tensorflow/PyTorch/MxNet……
夸张一点说,几乎没有什么做不了的东西(笔芯)。小慕今天分享两个可以用Python做的非常好玩的事情,大家都可以试试看~一、面部识别得益于大量前人的工作,如今利用Python做一些简单的计算机视觉工作已经变得非常非常简单了。像人脸识别、面部特征提取之类的工作,就可以直接拿来用,极少需要自己实现繁琐的算法。
DLib就是一个这样的C++库,而同时它也提供了Python接口。
想必大家都有过在办公室遭遇boss探视的经历,而此时此刻你却在毫无自知地逛着淘宝/知乎/豆瓣,场面一度十分尴尬……
那我们就来尝试一下,用Python通过摄像头探测人脸。如果有人进入了摄像头范围,则让Python提出一个通知,告诉你——赶紧把不相关的东西关掉!
整个代码很短,无非几十行,为了能够使用,我们还需要安装一些包和库。这里需要用到的包括OpenCV和DLib。由于dlib需要boost-python,因此还需要安装boost和boost-python。(注意:boost-python默认情况下只编译python2依赖的库,如果使用python3,需要加编译开关;而dlib里是没有探测python版本的,所以可能还需要做一些小hack或者是直接改boost-python库里的文件名)
至于代码,可以简单地放出来:
import cv2import dlibfrom subprocess import callfrom time import timeFREQ = 5FACE_DETECTOR = dlib.get_frontal_face_detector()# macOS下可以使用AppleScript发送通知def notify(text, title):cmd = r'display notification "%s" with title "%s"'%(text, title)call(["osascript", "-e", cmd])if __name__ == '__main__':# 初始化摄像头cap = cv2.VideoCapture(0)# 创建绘图窗口# cv2.namedWindow('face')notify_time = 0while True:# 获取一帧ret, frame = cap.read()# 不需要太精细的图片frame = cv2.resize(frame, (320, 240))# 探测人脸,可能有多个faces = FACE_DETECTOR(frame, 1)for face in faces:# 提取人脸部分 画个方框# fimg = frame[face.top():face.bottom(), face.left():face.right()] # cv2.rectangle(frame, (face.left(), face.top()), (face.right(), face.bottom()), (255, 0, 0), 3) # 不超过FREQ秒一次的发提醒if time() - notify_time > FREQ:notify(u'检测到人脸', u'注意')notify_time = time()# 画到窗口里# cv2.imshow('face', frame)# 按Q退出if cv2.waitKey(500) & 0xff == ord('q'): break# 清理窗口 释放摄像头# cv2.destroyAllWindows()cap.release()代码的原理很简单:通过opencv捕获摄像头获取的图像,然后交由dlib的face detector进行检测。如果检测到脸部,则通过AppleScript发出系统提醒(notify函数即通过process执行AppleScript发出提醒,如果你使用的是Windows,也可以替换成别的内容,例如Win下使用VBScript发出弹窗提醒)。
当然,既然检测到人脸,那就不仅仅只是能做简单提醒了。还可以做的事情包括多张照片的脸部变形合成——比如,找出你和你女朋友的照片来做个夫妻相合成什么的……
或者,提取所有的标志性点,给人脸合成出意外的表情或者哈哈镜效果。
甚至可以借助其它的深度学习网络进行人脸识别。这算是超级弱化版的脸部识别,比不上FaceID但也挺好玩,不过计算量就不容乐观了。
顺便说一句,什么人脸识别关掉不该看的东西,对小慕来说不存在的,人家上班刷知乎可是经过老板点头的!(骄傲脸叉腰)
二、数据分析来分析下Marvel 今年的最后一部戏:「雷神3:诸神的黄昏」。前一段时间满天飞的预告片,神秘博士的客串,绿巨人的出演,看得人十分兴奋!来张大图:
大家对于这部电影的评价是怎么样的呢?小慕爬取了2w条豆瓣影评,做一个简单分析。
先来看看豆瓣的短评:
这里只抓取了前2w条评论,说一个小技巧,喜欢写爬虫的小伙伴们注意了:爬取的网页一定要缓存到本地!这可以减少解析网页时出错,避免需要重新再爬一遍的「尴尬」!另外这能给服务器减少负载,人家网站管理员看你的请求还算守规矩,也就不会封你账号/ip啦!
代码大概是这样的:
下面是缓存下来的网页文件:
既然有2w多条数据,怎么能直接写sql,那会累死的……于是要来封装一下操作数据库的逻辑:
来看看效果,除去部分出错的,还剩下19672条:
具体的数据是长这样的:
另外,赞同数量排名第一 卷耳 君的影评实在是太有意思了:
第一部:《爸爸,再爱我一次》
第二部:《哥哥,再爱我一次》
第三部:《姐姐,再爱我一次》
ps:托尔终于从锤神变成了雷神
锤子之神这个梗小慕表示能玩一年(手动微笑脸)。
光有数据还不足以说明什么,深入分析一波:细心的小伙伴一定发现了,雷神明明是11月3号才上映,为啥10月份就有影评了?小慕猜测,这肯定是漫威铁杆粉跑国外看了,一查发现,果然人家洛杉矶10月10号就上映了:
既然关心到日期,可以来统计一下周一到周日哪天去看电影的人比较多:
整体数据显示:果然还是周末去看电影的人更多……周一数据高于二、三、四的原因,不知道是不是没有周末的朋友调休去看的?
PS: 数据库里的日期是2017-10-25格式的:怎么快速让他显示成周X呢? 这里只要写个小函数就行:
从数据库里读数据和统计的方式在这:(后面的统计方式也都类似,就不每次都把代码放出来啦)
说了这么多还是没提到电影的受欢迎程度,直接放图:
总体上看还是推荐的人比较多耶,这应该挺符合大家的预期,毕竟是漫威出品,光忠实粉丝就不计其数。更何况这个片子里出现了很多超级火爆的场面戏,还有各种超级英雄助阵,这样的统计结果也就不足为奇了。
最后将排名前100的评论内容做了一下分词,做成词云:
至于补充提问中提到的这为什么适合用Python做,其实说到底就是用Python来抓取和处理各种数据都非常「顺手」。
据小慕所知,目前的数据工作中,数据科学家使用最多的工具语言就是Python,排在第二的工具语言是R语言。但这里有一个有趣的现象,那就是同时使用Python或者R语言的人,推荐别人使用Python的却远高于R语言。Why?
答案是:1. Python简单易学,极其容易上手,语法简单,处理速度会比R语言要快,而且无需把数据库切割。
2. 市场前景好,是目前的趋势,就业也会更容易。
3. 标准库非常庞大,特别的“功能齐全”,可以处理各种工作,其中就包含抓取和处理数据。
所以,有一种说法是:python语言在工程方便比较实用,R语言则更受学术界欢迎。具体是否赞同这种说法,还要看大家自己的理解咯~其实除了小慕举例说的这两种有趣的事情,Python能做的还有很多,在此不一一列举,如果感觉get到了新姿势,记得回来点赞啦~
程序员学习交流请添加慕课网官方客服微信:mukewang666回复暗号“前端面试”可进前端交流群回复暗号“Java”可进Java交流群回复暗号“专栏”可进程序员交流群用Python爬网页需要了解什么背景知识?
爬虫其实就是一个数据获取的过程,无非就是两步,请求页面,解析数据,下面我大概介绍一下入门爬虫所需要掌握的基本知识:
1.要具有一定的前端知识,最起码应该能大概看懂网页内容,像基本的html元素,css样式,javascript等,不要求熟练掌握,这些是最基础的东西,数据都在网页里面嵌套着,要是连基本的网页都不会,如何解析数据呢?所以花个一两天时间了解一下网页知识:
2.要会进行抓包分析,会使用浏览器自带的开发者工具。网页中有些数据是动态加载的,只在请求网页时才加载数据,在网页源码中是不显示的,所以你需要会进行抓包分析,解析json数据等。我们经常模拟登录时,也需要进行抓包分析,需要post提交哪些内容等,只有在抓包分析后,才能构建相关提交数据:
3.防止被禁掉。短时间内频繁的访问服务器,很有可能会被服务器识别为爬虫,禁掉IP,这个时候你就需要使用IP代理池等,尽可能不被服务器发现。
4.存储数据。爬取下来的数据,我们需要进行存储,如果数据量大的话,这个时候你就需要了解一些常用的数据库的使用,像mysql,mongodb等,方便查询也方便管理:
5.最后就是学一些爬虫常用的框架,可以明显提高开发效率,避免重复造轮子,像python的开源爬虫框架scrapy等,使用起来也更快捷:
我要说的就是这几点,只要你认真的学习一下,查找查找相关资料和教程,一定会有大的收获,希望以上分享的内容能对你有所帮助吧。
现在学习python如何?
python就业路径
在说就业情况之前,我们先来了解一下Python的职业发展路径和可应用的领域有那哪些,再针对这些领域逐条聊聊就业情况:
基础阶段:这个阶段就是Python的核心编程,在市场上还不是很容易找到工作的Web阶段:这个阶段前端、Web框架、网络编程、数据库的相关知识点。如果全部都可以掌握的话,基本上薪资在8k到20k左右爬虫阶段:此阶段是web和数据采集,基本上薪资在10k-25k左右机器学习阶段:数据挖掘、算法等;薪资在15k-25k左右;Python往年就业盘点以及未来趋势自动化运维是被Python“占领”的一个新的热点和就业方向,随着技术和时代的发展,Python还会占领更多的热门就业方向。运维工具的话,可以找一些比较成熟的第三方开源,方便集成的运维工具,比如监控服务器的CPU,内存占用的工具,最好是Python做的工具等等,在这里这些就不多说了。
Python专业的学习路径根据上述职业发展给大家汇总一下学习重点:
如果职业发展是Web工程师的话:上述学习路线要学习的知识点是,python基础,python高级,前端开发,web开发。
如果职业发展是爬虫工程师的话:上述学习路线要学习的知识点是,包括上述知识点另外加上爬虫开发。
未来职业发展是数据方面的工作:所需要获取的知识点包括上述全部知识点外另加上自动化运维和数据挖掘;
未来职业发展是人工资还能相关:那么所需要获取的知识点是上图中全部内容。
总结一下:根据路线图,可以找到相关知识点的配套视频和笔记。如果找不到可以私信我来领。建议零基础的话,视频入门为主,书籍找一本教材类的书籍。里面含有python相关的大小各类项目。作为入门后项目衔接,并且可以查漏补缺的工具书。