Python入门小建议

"java从心"正式改名"KEN DO EVERTHING"。Ken(Can) Do Everything,无所不能html

Believe youseft then you can do everthing !java

我也是刚踏入python的大门,因此只能给点小建议,而不是指导(暂时只接触了python爬虫)python

入门3部曲mysql

1.语法学习,推荐能够看菜鸟教程上的python3语法git

https://www.runoob.com/python3/python3-tutorial.htmlgithub

有其余语言基础的人,其实能够随便过一遍,由于python语法很简单,不看语法也能直接看懂,实在不懂的时候再返回去查,效果可能会更好面试

2.视频学习,推荐廖老师python爬虫实战课程。算法

公众号后台发送【python爬虫】获取sql

千万别只看,看完相关视频得本身动手实战才会有收获!浏览器

3.实战项目,找几个本身想爬取的网站,试着用本身学到的东西,开始瞎搞吧!

当时实战遇到都是动态js生成的页面,无法直接从response获取数据,因此使用了selenium框架。

说几点须要注意的地方

1.别将selenium集成到scrapy上使用(多是拙见,若有错误务必纠正我)

由于Scrapy中Spirder的parse方法是单线程的,response交由parse处理时是队列串行的,使用selenium就不能同时打开多个浏览器爬取了,selenium原本就够慢了,因此别将selenium集成到scrapy。能够单独使用selenium而后开启多线程去爬取,会快不少。

(后面我才发现,原来scrapy也有爬取动态网页的库scrapy-splash!)。不过因为selenium出现的比较早,使用scrapy-splash的人会比selenium的少)

2.不要用time.sleep去等待页面加载

由于你根本不知道它真实加载时间是多久,设置多了就浪费时间,少了可能网页还没加载不出来。

对于selenium框架,推荐使用

WebDriverWait(driver, 10).until(特定元素),设置一个时间,等待出现某个特定元素,未出现则会抛出超时异常。而后能够加上重试操做,重试必定次数后放弃此次爬取,最简单的方式就是使用循环。

3.反爬

发现爬取程序出了问题,没法爬取数据,能够考虑下,是否是网站使用了一些反爬策略,这时就须要使用对应的反反爬方法去应对了

主要反爬策略有下面几种:

①判断User-Agent,是否为浏览器;

②判断短期内同一个IP访问次数;

③用户登陆后才能访问资源;

④短期用户使用不一样IP访问资源,异常登陆;

⑤验证码,滑动点击验证;

⑥数据加解密处理;

对于不一样反爬策略,可使用不一样应对方式:

①User-Agent:发起请求时候添加头信息,假装浏览器;

②短期内访问次数限制:可使用代理或者延时爬取;

③登陆后访问:模拟登陆保存cookie,请求时添加cookie信息;

④异常登陆:准备大量帐号,绑定不一样代理进行爬取;

⑤验证码:使用对应python库进行处理,github上面能够找到;

⑥数据加解密处理:使用对应算法进行破解,或者使用selenium进行抓取;

4.代码中需考虑所爬取网站的稳定性

网站可能会出现如下几种状况

1.所爬取网站性能不好,页面有时响应很慢

2.有时网站直接崩掉

3.处于维护状态

代码中必须考虑这些状况的出现,写对应的异常与处理逻辑,不然爬虫程序会崩掉或卡住

5.爬虫程序不是永久可用的

不论是分析页面仍是解析response的爬取,都是别人东西,万一网站有所改动,你的程序就不可用了。 若是你接了爬虫项目,这一点必须提早告知客户

好叻,我就懂这么一点,都告诉你了。

去开启你的python之旅吧


文章首发于公众号【KEN DO EVERTHING】 本公众号专一于java相关技术,但不限于java、mysql、python、面试技巧、生活感悟等。分享优质博文,技术干货,学习资源等优质内容。 欢迎关注,一块儿学习,共成长!

相关文章
相关标签/搜索