• python爬虫第一天


    简介
            
    1:组成:爬虫节点,控制节点和资源库。
           控制节点,也叫中央控制器,主要负责根据url地址分配线程,并调用爬虫节点进行具体的爬行。
           爬虫节点会按照具体的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本进行处理,爬行后会将结果储存到对应资源库中。
     
    2:类型:通用网络爬虫,聚焦网络爬虫,增量式网络爬虫,深层网络爬虫。
    增量式更新:指更新时只更新改变的地方,未改变就不更新。
    深层网络爬虫:爬取深层网页,需要想办法自动填写对应表单,填写有两种类型:基于领域知识的表单填写(建立一个填写表单的关键词库,在需要填写时根据语义分析自动填写)和基于网页结构分析的表单填写(一般是领域知识有限使用,根据网页结构分析自动填写)。
     
    聚焦网络爬虫:构成:初始url集合,url队列,页面爬行模块,页面分析模块,页面数据库,链接过滤模块,内容评价模块,链接评价模块等。
     
     
    3:爬行策略~选取url爬行顺序:深度|广度优先、大站优先、反链策略等
    OPIC策略、PartialPageRank策略
    一个网页的反向链接数:该网页被其他网页指向的次数(可能代表该网页被其他网页推荐次数)
     
    4:网页更新策略:
    用户体验策略:大部分用户只会关心排名靠前的网页,所以优先更新排名靠前的网页。
     
    历史数据策略:依据历史更新数据通过泊松过程进行建模预测下次更新时间。
     
    聚类分析策略:按照物以类聚的思想,根据每个类的网页抽样结果的平均更新值,确定每个聚类的爬行频率。
     
    5:网页分析算法
    基于用户行为的网页分析算法:会依据用户对网页的访问行为进行评价。
    基于网络拓扑的网页分析算法:依靠网页的链接关系、结构关系、已知网页或数据等对网页进行分析的一种算法。
     
    6:身份识别
            爬虫在对网页进行爬取得时候,会通过HTTP请求中的User Agent字段告知自己的身份。
    爬虫访问一个网站的时候会根据该站点下的Robots.txt文件来确定可以爬取的网页范围,Robot协议是需要网络爬虫共同遵守的协议。
     
    Urllib库:
        是python提供的一个操纵URL的模块。
     
    快速使用爬取网页.html
    方式一:  思路:
            首先将爬取得内容读取出来赋值给一个变量data。
            再以写入的方式打开一个本地文件命名为*.html等的网页格式
            之后将data中的值写入该文件中,关闭该文件。
    #使用:目的爬取一个百度首页的网页写入1.html,
    import urllib.request
    file=urllib.request.urlopen("http://www.baidu.com")
    data=file.read() #读取全部内容
    #dataline=file.readline() #读取一行内容,会把内容给一个列表变量
    #print(dataline)#输出爬取内容的第一行
    #print(data)#爬取内容全部
    fhandle=open("D:/crawler/1.html","wb")#将该data内容写入该目录下的html
    fhandle.write(data)
    fhandle.close()
     
     
    方式二:使用urlretrieve()函数爬取网页
     
    import urllib.request
    filename=urllib.request.urlretrieve("http://edu.51cto.com",filename="D:/crawler/2.html")
    urllib.request.urlcleanup()  #用于清除缓存
     
     
    其他相关方法
    info=file.info()#返回环境相关信息
    print(info)
    code=file.getcode()#获取状态码
    print(code)
    url=file.geturl()#获取爬取的url地址
    print(url)
    对网页进行编码、解码
    urllib.request.quote("http://www.sina.com.cn")#编码
    #编码后:http%3A//www.sina.com.cn
    urllib.request.unquote("http%3A//www.sina.com.cn")#解码
    #解码后:http://www.sina.com.cn
     
    反爬虫设置
            有时候爬取网页会出现403错误,这是对方网页进行了反爬虫设置
    这时我们可以设置Header属性,模拟浏览器去访问这些网站。
    import urllib.request
    file=urllib.request.urlopen(url)
    #执行后出现403错误
    此时我们打开百度首页按 F12 这时会出现一个窗口,我们切换到NetWork标签页,然后单击百度一下让网页发生一个动作
    这时点击NetWork下面出现的www.baidu.com,之后右边出现页面切换到Header,向下翻找到User-Agent字样的信息,复制下来。
    得到信息:
    User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
    接下来有两种方法:
        1:使用build_opener()修改报头
        使用urllib.request.build_opener()
     
    import urllib.request
    url="http://blog.csdn.net/weiwei_pig/article/details/51178226"
    headers={"User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
    opener=urllib.request.build_opener()
    opener.addheaders=[headers]
    data=opener.open(url).read()
    #接下来写入文件
    fhandle=open("D:/crawler/4.html","wb")
    fhandle.write(data)
    fhandle.close()
     
     
            2:使用add_header()添加报头
    import urllib.request
    url="http://blog.csdn.net/weiwei_pig/article/details/51178226"
    req=urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36')
    data=urllib.request.urlopen(req).read()
    fhandle=open("D:/crawler/4.html","wb")
    fhandle.write(data)
    fhandle.close()
     
     
     
     此文是我在学习《精通Python网络爬虫》(韦玮著)的总结,纯手打。
     
     
     
     
     
     
     
     
     
        
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    java 时间操作
    springboot-helloworld 学习02
    springboot-helloworld 学习01
    java知识图谱
    python day100-[day41-45]-5 web-django RESTful架构和DRF入门
    python day100-[day41-45]-4 web-django 前后端分离
    hive mysql count distinct 多列
    hive 导出数据到文件
    使用npm i 编译vue项目出现无法拉取clone github.com中的源文件
    windows环境下elasticsearch安装教程 (版本为7.12.0)
  • 原文地址:https://www.cnblogs.com/yang4869/p/10313268.html
Copyright © 2020-2023  润新知