zoukankan      html  css  js  c++  java
  • 爬虫前期知识的储备(二)

    通用爬虫与聚焦爬虫:

    通用爬虫:搜索引擎用的爬虫系统
    1)目标:
    把互联网的网页下载下来,放到本地服务器形成备份,
    再对这些网页做相关处理(提取关键字,去掉广告),最后提供一个用户检索接口。
    2)抓取流程:
    首先选取一部分已有的URL,把这些URL放到待爬取队列。
    从队列里取出这些URL,然后解析DNS得到主机IP,然后去这个IP地址对应的服务器下载HTML页面,
    保存到搜索引擎的本地服务器,之后把这个爬过的url放入已爬取队列。
    分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束。
    DNS:就是把域名解析成IP的技术。
    3)搜索引擎如何获取一个新网站的URL:
    主动向搜索引擎主动提交网址;
    在其它网站里设置网站的外链(友情链接);
    搜索引擎会和DNS服务商进行合作,可以快速收录新的网站。
    4)通用爬虫并不是万物皆可爬,需要遵守一些规则:
    Robots协议:协议会指明通用爬虫可以爬取网页的权限。
    Robots.txt(详情规则),一般只有大型的搜索引擎爬虫会遵守。
    个人写的爬虫就不管了。
    5)通用爬虫工作流程:
    爬取网页-->存储数据-->存储数据-->内容处理-->提供检索/排名服务
    6)搜索引擎排名:
    PageRank值:根据网站的流量(点击量/浏览量/人气)统计,排名越高越值钱。
    竞价排名:谁给钱多,谁排名高。
    7)通用爬虫的缺点:
    只能提供和文本相关的内容(HTML、Word、PDF)等,
    不能提供多媒体文件(音乐、图片、视频)等,二进制文件(程序、脚本)等。
    提供的结果千篇一律,不能针对不同领域不同专业的人提供不同的搜索结果。
    不能理解人类语义上的检索。

    聚焦爬虫:爬虫程序员写的是针对某种内容的爬虫
    为了解决通用爬虫存在的问题,聚焦爬虫出现了。
    面向主题爬虫,面向需求爬虫,会针对某种特定的内容去爬取信息,
    而且会保证内容和信息尽可能地相关。
    聚焦爬虫的工作原理:
    url-list-->响应内容-->提取url(-->响应内容,直到获取完成,进入下一步)-->提取数据-->入库

    HTTP和HTTPS

    HTTP协议:是一种发布和接收HTML页面的方法,即超文本传输协议。
    HTTPS协议:HTTP的安全版,在HTTP下加入SSL层,SSL层在传输层对网络连接进行加密。

    HTTP通信由两部分组成:客户端请求消息与服务器响应消息

    客户端HTTP请求包括以下的格式:
    请求行、请求头部、空行、请求数据
    HTTP请求主要分为Get和Post两种方法。
    GET是从服务器上获取数据,POST是向服务器传送数据。
    如果要提交表单,选择Post方式,使用Get方式会把用户密码暴露在地址栏上。

    Cookie:通过在客户端记录的信息确定用户的身份。
    Session:通过在服务器端记录的信息确定用户的身份。

    Fiddler是一个不错的抓包工具,当然直接浏览访问也可以。

    那么接下来我们就写一个简单的爬虫百度代码:

    from urllib import request
    import random

    #统一资源定位符
    url="http://www.baidu.com"

    #可以是User-Agent列表,也可以是代理列表
    ua_list=[
    "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6814.400 QQBrowser/10.3.3005.400",
    "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/56.0.2924.75 Mobile/14E5239e Safari/602.1",
    "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36",
    "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Mobile Safari/537.36"
    ]


    #在User-Agent列表中随机选择一个,更具有安全性
    user_agent=random.choice(ua_list)


    #User-Agent是爬虫和反爬虫斗争的第一步,养成这个好习惯
    headers={
    "User-Agent":user_agent
    }


    #向指定的url地址发送请求,并返回服务器响应的类文件对象
    #在Python2中,是urllib2,在Python3被改成urllib.request.
    response=request.urlopen(url)

    #服务器返回的类文件对象支持Python文件对象的操作方法
    #read()方法就是读取文件里的全部内容,返回字符串
    html=response.read()

    #打印响应内容
    print(html)

    #打印响应码
    print(response.getcode())

    #返回实际数据的实际url,防止重定向的问题
    print(response.geturl())

    #返回服务器响应的HTTP报头
    print(response.info())
     
    输出结果:
    (百度源码略)

    200


    http://www.baidu.com


    Date: Mon, 07 Jan 2019 06:47:42 GMT
    Content-Type: text/html
    Transfer-Encoding: chunked
    Connection: Close
    Vary: Accept-Encoding
    Set-Cookie: BAIDUID=B1228A8040377591F7EB96B1090C4AE2:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: BIDUPSID=B1228A8040377591F7EB96B1090C4AE2; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: PSTM=1546843662; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: delPer=0; path=/; domain=.baidu.com
    Set-Cookie: BDSVRTM=0; path=/
    Set-Cookie: BD_HOME=0; path=/
    Set-Cookie: H_PS_PSSID=1461_21101_28205_28132_26350_28266_27245_22158; path=/; domain=.baidu.com
    P3P: CP=" OTI DSP COR IVA OUR IND COM "
    Cxy_all: baidu+395db271fbbb06e1373116f63b95c029
    Cache-Control: private
    Expires: Mon, 07 Jan 2019 06:47:25 GMT
    Server: BWS/1.1
    X-UA-Compatible: IE=Edge,chrome=1
    BDPAGETYPE: 1
    BDQID: 0xd80982870003d452

  • 相关阅读:
    web接口文档apidoc的使用
    python 文件重命名
    sort()排序
    JavaScript自定义事件和触发(createEvent, dispatchEvent)
    Sql 2016 安装到sql_shared_mrconfigaction-install-confignonrc-cpu64卡住不动,是什么原因呢?
    基础提供程序在Open上失败
    win10 Hyper-v 虚拟机监控程序灰色 尝试检索虚拟交换机列表时出错【转载】
    相对路径获取文件名
    省市区三级联动
    反射==>不明确的匹配
  • 原文地址:https://www.cnblogs.com/Masterpaopao/p/10233204.html
Copyright © 2011-2022 走看看