在准备学习人工智能之前呢,我看了一下大体的学习纲领。发现排在前面的是PYTHON的基础知识和爬虫相关的知识,再者就是相关的数学算法与金融分析。不过想来也是,如果想进行大量的数据运算与分析,宏大的基础数据是必不可少的。有了海量的基础数据,才可以支撑我们进行分析与抽取样本,进行深度的学习。

  看到这个爬虫的介绍,突然想起来2012年左右在微软亚洲院做外派时做的一个项目。当时在亚洲研究院有一个试验性质的项目叫“O Project", 这里面的第一个字符是字母O。在真正的进入项目之后才知道为什么叫“O”:在IPAD上面使用safari浏览器浏览一个网站,激活插件后,使用手指画圈圈,而圈圈内的词组就会向Bing和Google发出查询请求,在查询请求完成后,返回相应的结果。这个主要是应用在页面级,类似于现在页面上的单词翻译一样。

  当时在做这个项目的时候,还没有爬虫的概念与理念。所以我是通过这样的方式来实现这个需求的:

  1. 创建一个服务,这个服务主要是接收前台页面回传的圈圈词句;

  2. 在页面当中激活绘图功能(主要是safari),根据绘制的圈圈,取出页面当中的词句。取出词语的方式也很简单,例如下面的图画:

    所画的圈圈的四个最上、下、左、右的元素的X和Y坐标,然后再根据页面当中的文字对应出其所在页面当中的坐标值,如果字符串在这四个坐标内,就认为其为圈中的字符串。

    如果像图当中的“颗”这个字,其左坐标没有包含在左箭头的X和Y的范围内,则不将“颗”统计的字符串内,但是“中”满足这样的条件。

  

  3. 在取得圈内的字符串后,回传回后台的服务。

  4. 后台的服务向BING和GOOGLE发出查询请求。当时因为没有现在的Python和Scrapy这些流行的框架及组件,我只能通过C#来进行解析:创建一个流程器对象,设置其URL为BING或者GOOGLE的查询字符串。在接收完回传信息后,截取其内容也就是HTML字符串,摘取其中的搜索结果、引用地址及相应的简介。

  5. 将所收集到的内容存放到数据库当中进行备案查询或者其他的用处。

  6. 当时要对于可能感兴趣的内容进行推荐,就需要人工去点击或者匹配相应的词汇来完成更深入的查询与匹配。现在想想真是太落后了。

  随着学习的深入,目前完成了Python的基础使用、工具的使用、第三方工具的初步使用等。在接下来的文章当中我一步步的向大家进行共享吧。

Python爬虫的学习经历的更多相关文章

  1. Python爬虫系统化学习(2)

    Python爬虫系统学习(2) 动态网页爬取 当网页使用Javascript时候,很多内容不会出现在HTML源代码中,所以爬取静态页面的技术可能无法使用.因此我们需要用动态网页抓取的两种技术:通过浏览 ...

  2. Python爬虫系统学习(1)

    Python爬虫系统化学习(1) 前言:爬虫的学习对生活中很多事情都很有帮助,比如买房的时候爬取房价,爬取影评之类的,学习爬虫也是在提升对Python的掌握,所以我准备用2-3周的晚上时间,提升自己对 ...

  3. Python爬虫系统化学习(4)

    Python爬虫系统化学习(4) 在之前的学习过程中,我们学习了如何爬取页面,对页面进行解析并且提取我们需要的数据. 在通过解析得到我们想要的数据后,最重要的步骤就是保存数据. 一般的数据存储方式有两 ...

  4. Python爬虫系统化学习(5)

    Python爬虫系统化学习(5) 多线程爬虫,在之前的网络编程中,我学习过多线程socket进行单服务器对多客户端的连接,通过使用多线程编程,可以大大提升爬虫的效率. Python多线程爬虫主要由三部 ...

  5. 一个Python爬虫工程师学习养成记

    大数据的时代,网络爬虫已经成为了获取数据的一个重要手段. 但要学习好爬虫并没有那么简单.首先知识点和方向实在是太多了,它关系到了计算机网络.编程基础.前端开发.后端开发.App 开发与逆向.网络安全. ...

  6. python爬虫专栏学习

    知乎的一个讲python的专栏,其中爬虫的几篇文章,偏入门解释,快速看了一遍. 入门 爬虫基本原理:用最简单的代码抓取最基础的网页,展现爬虫的最基本思想,让读者知道爬虫其实是一件非常简单的事情. 爬虫 ...

  7. python爬虫scrapy学习之篇二

    继上篇<python之urllib2简单解析HTML页面>之后学习使用Python比较有名的爬虫scrapy.网上搜到两篇相应的文档,一篇是较早版本的中文文档Scrapy 0.24 文档, ...

  8. 【Python爬虫案例学习】下载某图片网站的所有图集

    前言 其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. 其实就几行代码,但希望没有开发基础的人也能一下子看明白,所以大神请绕行. 基本环境配置 python 版本:2.7 ...

  9. Python爬虫系统化学习(3)

    一般来说当我们爬取网页的整个源代码后,是需要对网页进行解析的. 正常的解析方法有三种 ①:正则匹配解析 ②:BeatuifulSoup解析 ③:lxml解析 正则匹配解析: 在之前的学习中,我们学习过 ...

随机推荐

  1. selenium调用webdriver异常

    使用selenium调用webdriver的时候报错. from selenium import webdriver browser = webdriver.Chrome() browser.get( ...

  2. centos7更改时区

    1,linux系统更换时区 2,时间同步 1,linux系统更换时区 注:# timedatectl # 查看系统时间方面的各种状态 # timedatectl list-timezones # 列出 ...

  3. redis缓存与数据库一致性问题

    一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...

  4. css样式之input输入框默认样式

    帮朋友写个简单的课程设计,后面会贴出来,项目刚开始就遇到一个坑(给input输入框设定样式,但是,点击后会出现蓝色边框),之前写其他的项目时也遇到过,百度一下资料解决了,现在又碰到了,写一下,留着备用 ...

  5. Atomikos和GTS-Fescar和TCC-Transaction和TX-LCN分布式事物的比较

    什么是分布式事物 分布式系统中保证不同节点之间的数据一致性的事物,叫做分布式事物. 为什么要用分布式事物 微服务,SOA等服务架构模式,一个是service产生多个节点,另一个是resource产生多 ...

  6. 4.Redis客户端

    4.Redis客户端4.1 客户端通信协议4.2 Java客户端Jedis4.2.1 获取Jedis4.2.2 Jedis的基本使用方法4.2.3 Jedis连接池的使用方法4.2.4 Redis中P ...

  7. jmeter用Windows电脑分布式部署

    当然,java环境.jmeter安装我这里就不说了. 使用1个controller(imac电脑),2个agent(Windows7 系统) 一.agent配置(Windows7系统) 1.电脑环境变 ...

  8. Task与线程池

    尽量使用Task,而不是线程池 因为Task是基于线程的,单不是一一对应的 Task的切换与开销要比线程小很多,也更容易管理 http://www.cnblogs.com/yunfeifei/p/41 ...

  9. 认识JavaScript Promise

    参考: EC前端 - Promise - http://www.ecmaer.com/javascript/nativeObj/promise.html 关于Promise: 什么是 Promise? ...

  10. Nginx浅谈

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...