首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

个人爬虫小结,and 数据分析 Task starts right now

前言

基础算法复习教程还有大概三个知识点,分别是图、最小生成树、最短路径。然而天天看大家一致认为枯燥的算法,怎能不头晕,所以想把数据分析简单入门TASK提前。个人计划是算法和数据分析同步进行,要不一点乐趣都没有,之间可能会插入一些其他技术知识点。

数据分析,前提是需要数据,那么数据如何来,不用说也知道了,通过爬取网站得到的。但是这里不会详细介绍如何爬取网站,本篇文章只是作为爬虫的总结,数据分析的前奏。

具体示例见

https://github.com/raojianxiong/Python36 ,基本会这些操作,爬虫算入门了吧。

1

这一小节,总结一下爬虫的具体流程。

1.拿到需要爬去的网址,先对其进行分析,右键查看源代码检查一下是否自己所需要的数据是动态加载的,如果是动态加载可以选择AJAX或者直接Selenium等模拟浏览器。

2.检查编码格式,防止乱码情况

3.查看网址对应的请求方式(一般GET就可以了)

4.开始写代码爬取

5.爬取正确,就不用管了,得到了自己想要的数据就行,但是出现爬取出错,往往是没有添加请求头或者动态代理,告诉它我不是代码爬取,所以这里需要为请求添加动态UA,代理IP。

爬虫并不难,但想爬好,确实不容易。爬虫过程中,需要对网页进行解析,往往使用BeautifulSoup、re、XPath来匹配网页。这小节知识点少,下一小节将总结Scrapy爬虫。

2

1.scrapy 工作流程

engine获得spiders内url,请求调度程序,对url进行爬取,Downloader返回response给爬虫引擎,引擎返回response给spiders,然后spiders处理item,发送给管道处理,然后把结果返回给调度器,然后重复此过程

2.首先是Scrapy普通爬虫

3.其次是整站爬虫

4.然后爬虫数据需要存入数据库,个人熟悉MySQL等关系型数据库,所以以mysql为主

a.爬虫第一步当然是需要把ROBOTSTXT_OBEY改成False,

b.如果过程总遇到导包问题,应该不出意外需要加这句话

c.数据放到数据库需要settings.py里面的ITEM_PIPELINES={....}首先取消注释

d.然后在items.py内将类对象属性进行处理,建议做的时候线debug一下,以防得到的属性值为数组没转换,对属性处理如下:

e.然后可以在类里面定义一个插入数据到数据库的函数,例如

g.然后在Pipeline的process_item内,直接调用

h.上面这种是同步操作,肯定不是我们想要的,然后twisted就出场了

i.然后只剩下同步的时候,数据库连接了

5.数据也放到数据库了,那么需要考虑的问题就是设置User_Agent和ip

a.如果不设置,那么Scrapy将会自动设置为Scrapy

b.User_Agent也不能总是一个,如果数据多,实时更换是有必要的,可以选择在setting里面放一个user_agent list,每次随机取,但是这种情况下,每次请求都要执行随机取user_agent的函数。既然Scrapy有Middlewares,就可以利用一个比较好用的user_agent库(fake_useragent,每次随机生成user_agnet),每次在中间件里面process_request(self,request, spider)函数内对headers进行设置user_agent

c.当然上一步需要把中间件开启,在setting里面取消注释即可,并且需要将scrapy自带的中间件设置为None

d.接下来就是动态ip,在西刺网上都是高匿名的ip,不过每次爬取下来然后使用时,发现好多都并不能用,都要先进行访问一下,不能用再筛选,数据不多还可以,数据一旦多起来就慢了。这里使用scrapy_proxies,也是在github上有,同User_Agent设置一样

6.接下来就是验证码问题了,tesseract-ocr准确性不高,个人觉得用在线打码方式最方便,当然人工打码准确率是最高的

a.Selenium集成到Scrapy中,这里就需要信号链了。

b.同样是操作中间件,在Spider里面,即自己写的爬虫文件里面先init一个browser,然后connect一个信号链来检测爬虫完后关闭浏览器

c.在中间件里面直接spider.browser获取browser即可

7.接下来就是phantomjs无界面浏览器继承到scrapy了,和上面类似

8.利用scrapyd将爬虫部署,windows上需要在个scrapyd-deploy下新建一个同名的.bat文件,内容是:

以上便是个人学习完爬虫后对爬虫的基础知识点总结,本公号未有留言功能插件,SO 有见解需要沟通可以后台加WX

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G20B0800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券