python编程遇到的几个坑
2018-06-23 · 百度认证:云南新华电脑职业培训学校官方账号
云南新华电脑学校
云南新华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校,采用三元化管理模式,教学设备先进,师资雄厚学生毕业即就业,学院引进了电商企业入驻,创建心为电商创业园区,实现在校即创业
向TA提问
关注
展开全部
1. 爬个别特定网站,不一定得用python写爬虫,多数情况wget一条命令多数网站就能爬的不错,真的玩到自己写爬虫了,最终遇到的无非是如何做大做壮,怎么做分布式爬虫。scrapy这种价值接近0,异步或者多线程搞抓取,选一个成熟的基于磁盘的队列库,kafka之类的,scrapy帮了啥?
2. http库众多,还有gevent库monkey patch以后coroutine的玩这一选择,规模千万的话urllib3很好。
3. 对付网站的诸如登录、ajax,这种不过是体力民工活,不展开了。
4. 速度很重要,放ec2或者国内的云上跑,很重要的指标是你每一亿网页爬下来成本多少,爬的时候比如4核一个虚拟机节点,你能inbound贷款用足100mbps吗。
5. beautifulsoup太慢,全网的爬,encoding的分析也要要快,c实现的chardet还行
最关键的,永远是爬下来以后的信息的提取、分析、使用,就是另外一个话题了。
1.学会使用chrome浏览器查看通信以及查看元素格式
2.增加User-Agent, 这是最简单的反爬措施了
3.写爬虫最好使用Ipython,在交互式的环境下,可以时刻了解自己问题具体出在哪里
4.使用requests
5.用get或者post下好html之后,要确认你需要的东西html里面有,而不是之后用ajax或者javascript加载的。
6.解析的话,BeautifulSoup不错。对于少数非常特殊的,可以考虑用re。
7,需要大量采集数据的话,学会使用框架,比如scrapy。
进阶:
加入网站需要模拟登陆,里面使用了很多ajax或者javascript,或者反爬虫厉害,用requests的session,注意F12查看到底发送了什么数据。
实在不会,就使用模拟浏览器吧,推荐selenium,虽然速度慢点,内存多点,但是真的很省力,而且基本查不出来。
最后,爬虫速度不要太快,加上time.sleep(1),尽量少用多线程,别人建站也不容易,(尤其是小站)你不给别人带来很大的麻烦,别人也就睁一只眼闭一只眼了,否则封IP不是好玩的。
有些页面喜欢使用redirect,然而requests的get和post方法中默认是直接跳转的!很可能你就带着错误的cookies和headers跳转了,所以务必将allow_redirects参数设为false
2. http库众多,还有gevent库monkey patch以后coroutine的玩这一选择,规模千万的话urllib3很好。
3. 对付网站的诸如登录、ajax,这种不过是体力民工活,不展开了。
4. 速度很重要,放ec2或者国内的云上跑,很重要的指标是你每一亿网页爬下来成本多少,爬的时候比如4核一个虚拟机节点,你能inbound贷款用足100mbps吗。
5. beautifulsoup太慢,全网的爬,encoding的分析也要要快,c实现的chardet还行
最关键的,永远是爬下来以后的信息的提取、分析、使用,就是另外一个话题了。
1.学会使用chrome浏览器查看通信以及查看元素格式
2.增加User-Agent, 这是最简单的反爬措施了
3.写爬虫最好使用Ipython,在交互式的环境下,可以时刻了解自己问题具体出在哪里
4.使用requests
5.用get或者post下好html之后,要确认你需要的东西html里面有,而不是之后用ajax或者javascript加载的。
6.解析的话,BeautifulSoup不错。对于少数非常特殊的,可以考虑用re。
7,需要大量采集数据的话,学会使用框架,比如scrapy。
进阶:
加入网站需要模拟登陆,里面使用了很多ajax或者javascript,或者反爬虫厉害,用requests的session,注意F12查看到底发送了什么数据。
实在不会,就使用模拟浏览器吧,推荐selenium,虽然速度慢点,内存多点,但是真的很省力,而且基本查不出来。
最后,爬虫速度不要太快,加上time.sleep(1),尽量少用多线程,别人建站也不容易,(尤其是小站)你不给别人带来很大的麻烦,别人也就睁一只眼闭一只眼了,否则封IP不是好玩的。
有些页面喜欢使用redirect,然而requests的get和post方法中默认是直接跳转的!很可能你就带着错误的cookies和headers跳转了,所以务必将allow_redirects参数设为false
展开全部
1.很难找到合适且优质的学习资源,难以下手,或者随便找一些材料开始学习,极其容易从入门到放弃;
2.遇到问题不知道如何寻找解决办法,甚至连问题都描述不清楚,经常被一些细小的问题卡住,学习效率不高;
3.在理论学习中无法自拔,学习很久之后,发现还是不知道如何在实际的项目中去应用,缺乏解决问题的能力;
4.看到别人的案例觉得好像是那么回事,但是自己去写代码的时候依然很困难,无法训练编程思维。
如果你遇到如上这些坑,说明自学的方式会比较困难,就需要找一位老师指导了。
毕竟完全没有基础学Python还是有一定困难的,特别是在项目阶段。
2.遇到问题不知道如何寻找解决办法,甚至连问题都描述不清楚,经常被一些细小的问题卡住,学习效率不高;
3.在理论学习中无法自拔,学习很久之后,发现还是不知道如何在实际的项目中去应用,缺乏解决问题的能力;
4.看到别人的案例觉得好像是那么回事,但是自己去写代码的时候依然很困难,无法训练编程思维。
如果你遇到如上这些坑,说明自学的方式会比较困难,就需要找一位老师指导了。
毕竟完全没有基础学Python还是有一定困难的,特别是在项目阶段。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询