您的位置:首页 > 编程语言 > Python开发

python爬虫爬取

2019-06-02 23:42 477 查看
版权声明:菜鸟学习,请多多指教. https://blog.csdn.net/weixin_43784462/article/details/90745454

Python爬虫

针对python爬虫这块,最近写了有大大小小三个项目,遇到几个难点,下篇总结出来,这里先写下我总结的爬虫爬取步骤.

静态文件:

针对静态文件的爬取,列如图片之类的,一般网站都保存在CDN上,需要先从网页上获取图片地址就好了,需要注意下保存的格式,有可能会导致图片无法打开的问题(一般保存为png格式内容).

数据:

爬虫解决打就是数据源的问题,是数据处理,数据分析之类的先行问题.所以更多的还是需要爬取数据的更多一些.

针对网页显示数据的问题,有些是直接放在网页源代码中,有的是由请求返回的json格式中(前后端分离开发的),还有的是js加密来的(解密的话,可能需要掉些头发).针对各种数据渲染方式,我们可以采用不同的爬取方式.

1.对于在html代码中的数据

有的网站的数据是放在网页源代码中,我们只需要采用python的requests模拟访问请求就可以获取到响应.得到的响应就是完整的html网页代码,这是我们只需要使用解析器解析提取数据就可以了.以下是三种常见的解析方法.

个人使用xpath较多,简单快捷.

以下四种解析器:

2.对于返回的json数据

现在很多网站是前后端分离开发(瀑布流网站,翻页之类的),我们可以采用抓包的方法,分析得到正确的请求地址和参数,然后模拟请求,得到json数据,再进行处理就好了.

3.js加密的数据

对于这类网站数据,可以破解其加密的方式来获取数据.但是不推荐,首先,破解很费时间,而且别人不定时更改加密方式,这样的话,不适用于长久爬取,你需要从新更改代码.相当麻烦.一般采用selenium模拟浏览器的行为完成数据采集,不过这样阻塞,代码执行效率低.

步骤:

  1. 一般遇到一个爬虫需求,我们可以先打开网站,查看下源代码,发现数据是否在源代码中,或者是某个请求的返回的json数据中.
  2. 在观察了网站后,我们可以获取到数据的请求地址,接下来我们可以先模拟一个requests请求,测试下是否有数据,或者是否有反爬措施.再进行针对反爬的响应措施(请求头,参数,ip代理之类的).
  3. 针对某些只能登陆后才能请求到的数据,那么我们需要先获取到cookie.这里可能会涉及到对验证码的处理,最近处理过苏宁,京东的滑块验证码和数字验证码,会在下一篇谈到
  4. 对于js加密的数据,可以简单分析下js加密的逻辑,如果太复杂,或是加密方式变化周期短,建议采用selenium,简单,粗暴,但是切记,不要一开始就使用selenium爬取,先测试下,不要动不动就上selenium
  5. 接下来,拿到数据就可以进行数据分析,pandas这个库可以很好满足大部分需求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: