python爬虫1 简介

一、“大数据时代”,数据获取的方式:

1. 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然的优势
有数据意识的中小型企业,也开始积累的数据
2. 数据管理咨询公司:通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、
问卷调查、固定的样本监测,和各行各业的公司进行合作、专家对话(数据积累很多年,得到的科研成果)
3. 政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的
第三方网站
4. 第三方数据平台购买数据 
5. 爬虫爬取数据

二、什么是爬虫?
抓取网页数据的程序

三、如何抓取网页数据?
网页三大特征:
1. 每个网页都有自己唯一的URL(统一资源定位符)来进行定位
2. 网页都使用HTML(超文本标记语言)来描述页面信息
3. 网页都是用HTTP/HTTPS(超文本传输协议)来传输HTML数据

爬虫的设计思路
1. 首先确定需要爬取的网页URL地址
2. 通过HTTP/HTTPS协议来获取对应的HTML页面
3. 提取HTML页面里有用的数据
    a.如果是需要的数据,保存下来
    b.如果是页面的其他URL,就继续执行第二布


四、为什么选择python做爬虫?
可以做爬虫的语言很多,如PHP、Java、C/C++、Python等等
PHP 虽然是世界上最好的语言,但天生不是干这个的,而且对多线程、异步支持不够好,并发支持能力弱
        爬虫是工具性程序,对速度和效率要求比较高
JAVA的网络爬虫生态圈也很完善,是python爬虫最大的对手,但java语言本身很笨重,代码量很大
        重构成本高,任何修改都会导致代码的大量电动,爬虫经常需要修改部分
C/C++运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢
        能用C/C++做爬虫,只能说是能力的表现,但不是正确的选择
python 语法有没、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富
        还有强大的爬虫Scrapy,以及成熟高效的scrapy-redis分布式策略
        而且,调用其他接口非常方便(胶水语言)

五、课程介绍
1. python基本语法知识
2. 如何抓取HTML页面
    HTTP请求的处理,urllib、urllib2、requests
    处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件
3. 解析服务器响应的内容
    re、xpath、BeautifuiSoup4(bs4)、jsonpath、pyquery等
    使用某种描述性语言来给我们需要提取的数据定义一个匹配规则,
    符合这个规则的数据就会被匹配
4. 如何采集动态HTML、验证码的处理
    通用的动态页面采集:Selenium + PhantomJS(无界面),模拟真实浏览器加载js、ajax等非静态页面数据
    Tesseract: 机器学习库,机器识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台

5. Scrapy框架:(Scrapy\Pyspider)
    高性能高定制性(异步网络框架twisted),所以数据下载速度非常快
    提供了数据存储、数据下载、提取规则等组件
6. 分布式策略:
    scrapy-redis,在scrapy的基础上添加以redis数据库为核心的一套组件
    让scrapy框架支持分布式的功能,主要在Redis里做请求指纹去重、请求分配、数据临时存储
7. 爬虫、反爬虫、反反爬虫之间的斗争
    爬虫做到最后,最头疼的不是复杂的页面,也不是晦涩的数据,而是网站另一边的反爬虫人员
    User-Agent、代理、验证码、动态数据加载、加密数据
    数据价值,是否值得去费劲做反爬虫
    机器成本+人力成本>数据价值,就不反了,一般做到封IP就结束了
    只要是真实用户可以浏览的网页数据,爬虫就一定能爬下来


六、通用爬虫 聚焦爬虫
1.通用爬虫 搜索引擎用的爬虫系统
目标:把互联网上所有的网页下载下来,放到本地服务器里形成备份
    再对这些网页做相关处理(提取关键字、去掉广告),最后提供
    一个用户检索接口
抓取流程:
    a).首先选取一部分已有的URL,把这些URL放到待爬取队列
    b).从队列里去除这些URL,然后解析DNS得到主机IP,去这个IP对应的服务器里下载HTML页面,
        保存到搜索引擎的本地服务器,之后把爬过的URL放入已爬取队列
    c).分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束
搜索引擎如何获取一个新网站的URL:
    1. 主动向搜索引擎提交网址 http://zhanzhang.baidu.com/linksubmit
    2. 在其他网站设置网站的外链
    3. 搜索引擎会和DNS服务商进行合作,可以快速收录新的网站
    DNS:就是把域名解析成IP的一种技术
通用爬虫并不是万物皆可爬,需要遵守规则:
    robots协议:协议会知名通用爬虫可以爬取网页的权限
    robots.txt并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫遵守
    个人写的爬虫,就不管了
通用爬虫的工作流程:爬取网页→存储数据→内容处理→提供检索/排名服务

搜索引擎排名 
    1. PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,排名越靠前
    2. 竞价排名: 谁给钱多,谁排名就高

通用爬虫的缺点:
    1.只能提供文本相关的内容(HTML、Word、PDF)等,
    但不能提供多媒体(音乐、图片、视频)和二进制文件(程序、脚本等)
    2. 提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果
    3. 不能理解人类语义上的检索

聚焦爬虫:爬虫程序员写的针对某种内容的爬虫
面向主题爬虫、面向需求爬虫:会针对特定的内容去爬取信息,而且会保证

猜你喜欢

转载自blog.csdn.net/wjl31802/article/details/82496857