美文网首页机器学习实战Python
爬虫篇——基础知识介绍

爬虫篇——基础知识介绍

作者: 飘涯 | 来源:发表于2018-02-06 19:49 被阅读59次

    前言:
    爬虫是信息和数据获取的一种手段,写此文一方面梳理一下自己学习知识的思路,如果再能帮到一些人就更好了。

    • 爬虫步骤

    爬虫的步骤一般类似,步骤如下:

    • 1.请求网页得到源代码

    • 2.对源码进行解析

    • 3.获得自己想要的信息

    • 4.保存

    • 内容

    通过爬虫步骤,本文主内容如下

    • requests库(用于请求网页)

    • html网页简单分析

    • bs4 and lxml对网页进行解析

    个人感觉lxml比bs4简洁一些

    • 请求网页(requests库)

    *基本请求get 或 post

    '''#<Response [200]>表示正常访问
    cookies参数
    post请求,参数为data
    '''
    import requests
    r = requests.get("https://www.jianshu.com/")
    print(r)
    #查看状态码
    print(r.status_code)
    #查看编码
    print(r.encoding)
    #cookies
    print(r.cookies)
    

    模拟登陆

    使用get传递参数,params={};headers={};
    headers参数,模拟登陆
    parm = {"name":"meimei","age":18}
    head ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 "}
    re = requests.get("https://httpbin.org/get",params=parm,headers=head)
    print(re.text)
    

    例子:下载音乐

    r = requests.get("http://zhangmenshiting.qianqian.com/data2/music/c834308c5e8935a67ac9d2000eed1d64/554927014/554927014.mp3?xcode=6fb9f3c231e1399d48ae5c20176c0886",stream=True)
    # print(r.content)
    with open("1.mp3","wb") as file:
        for i in r.iter_content(1024*10):#每次写的大小
            file.write(i)
    
    • cookies参数 和 session会话
      当你访问有登陆网站的服务器之后,服务器会建立一个session同时返回给你相对应的cookies参数,你再次访问就不需要再次输入密码了
    s= requests.session()#开启session会话,后面加上update(head)
    
    head ={'cookies':'one',"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 "}
    r = s.get("https://httpbin.org/get",headers=head)
    print(r.text)
    s.headers.update(head)
    r = s.get("https://httpbin.org/get",headers={"cooke":"two"})
    print(r.text)
    

    第二次访问继承了第一次访问的cookies

    • html页面

    一张图就ok了


    image.png
    • 解析网页

    bs4后面用一个例子介绍,这里介绍更简单的lxml

    • lxml
      注意,下载lxml模块3.7.3版本
      解析前面获取的源码,代码如下
    from lxml import etree
    import requests
    url = "https://www.cnblogs.com/"
    head ={
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'
    }
    r = requests.get(url,head).content.decode("utf-8")
    #解析
    html = etree.HTML(r)
    
    • 数据获取,用xpath选取节点
    选取节点
    dom = html.xpath("/html/body/div")#从根节点开始,以列表形式返回
    print(dom)
    
    dom = html.xpath("//a")#返回文档中所有的a标签
    print(dom)
    dom = html.xpath("//@*")#返回所有属性
    print(dom)
    or的用法
    dom = html.xpath("//*[@class='one']")
    dom1 = html.xpath("//*[@class='one' or @class='two']")
    print(dom)
    print(dom1)
    

    获取文本 获取属性值

    #获取文本
    dom = html.xpath("//*[@class='one']/text()")#获取list
    dom1 = html.xpath("string(//*[@class='one'])")#获取节点里面所有的内容
    print(dom)
    print(dom1)
    #获取属性
    dom3 = html.xpath("//*[@class='one']/@href")
    print(dom3)
    

    爬虫篇(4)——qq音乐爬取
    爬虫篇(3)——招聘网站招聘信息的爬取
    爬虫篇(2)——爬取博客内容
    爬虫篇(1)——从爬取练习题开始

    相关文章

      网友评论

        本文标题:爬虫篇——基础知识介绍

        本文链接:https://www.haomeiwen.com/subject/wvxnzxtx.html