关键词搜索

源码搜索 ×
×

Python网络爬虫学习基础笔记

发布2021-01-20浏览302次

详情内容

本次学习的python爬虫所使用的是requests库
下面就是requests库的7种主要方法

方法名说明
requests.request()构造一个请求,支撑以下各方法的基础方法
request.get()获取HTML网页的主要方法,对应HTTP的GET
requests.head()获取HTML网页的主要方法,对应HTTP的HEAD
requests.post()向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put()向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch()向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete()向HTML页面提交删除请求,对应于HTTP的DELETE

基础访问流程

st=>start: 创建requests对象
op1=>operation: 检查r.status_code
cond=>condition: r.status_code==200?
op2=>operation: 进行后续操作
sub=>subroutine: 访问失败
e=>end

st->op1->cond
cond(yes)->op2->e
cond(no)->sub

    get()方法简介
    部分语法r=requests.get(url)
    表示构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Respon对象
    完整语法requests.get(url,params=None,**kwargs)

    get()方法参数 说明
    url 拟获取页面的URL链接
    params url中的额外参数,控制字典或字节流格式(可选)
    **kwargs 12个控制访问参数
    Response对象属性 说明
    r.status_code HTTP请求的返回状态,200表示链接成功404表示失败
    r.text HTTP响应内容的字符串形式,即,url对应的页面内容
    r.encoding 从HTTP header中猜测的响应内容编码方式
    r.apparent_encoding 从内容分析出的响应内容的编码方式(备选编码方式)
    r.content HTTP响应内容的二进制形式
    基本示例

    #在python shell中进行逐行输入
    import requests
    r=requests.get("http://www.baidu.com")
    r.status_code#返回了200表示访问成功
    r.text#输出访问内容--发现有部分中文乱码
    r.encoding#发现编码为ISO-8859-1
    r.apparent_encoding#发现内容编码为UTF-8
    r.encoding = 'utf-8'#将读取编码改为utf-8
    r.text#此时发现输出内容正常
    r.encoding:如果header中不存在charset,则认为默认编码为ISO-8859-1
    r.apparent_encoding:根据网页内容分析出的编码方式
    
      11

    Requests库异常
    异常 说明
    requests.ConnectionError 网络连接错误异常,如DNS查python基础教程询失败、拒绝连接等
    requests.HTTPError HTTP错误异常
    requests.URLRequired URL缺失异常
    requests.TooManyRedirects 超过最大重定向次数,产生重定c#教程向异常
    requests.ConnectTimeout 连接远程服务器超时异常
    requests.Timeout 请求URL超时,产生超时异常
    Response异常

    异常 说明
    r.raise_for_status() 如果不是200,产生异常 requests.HTTPError
    爬取网页通用代码框架

    import requests
    def getHtmlText(url):
        try:
            r = requests.get(url, timeout=30)
            r.raise_for_status()#状态码不是200,引发HTTPError异常
            r.encoding = r.apparent_encoding#设置读取编码为页面内容编码,防止乱码
            return r.text
        except:
            return "发生异常"
    if __name__ == "__main__":
        url="http://www.baidu.com"
        print(getHtmlText(url))
    
      11
    • 12

    通过r.raise_for_status()以及try–except捕捉访问异常

    requests.requests控制访问的参数
    参数名 说明
    params 字典或字节序列,作为参数增加到url中
    data 字典,字节序列或文件对象,作为Request的内容
    json JSON格式的数据,作为Request的内容
    headers 字典,HTTP定制头(模拟浏览器进行访问)
    cokies 字典或CpplieJar,Request中的cookie
    auth 元祖,支持HTTP认证功能
    files 字典类型,传输文件
    timeout 设定超时时间,秒为单位
    proxies 字典类型,设定访问代理服务器,可以增vb.net教程
    加登陆认证,防止爬虫反追踪
    allow_redirects True//False,默认为True,重定向开关
    stream True/False,默认为True,获取内容立即下载开关
    verify True/False,默认为True,认证SSL证书开关
    cert 本地SSL证书路径"""
    params参数的例子:
    例:

    kv={'key1':'value','key2':'value2'} r=requests.request('GET','http://python123.io/ws',params=kv) print(r.url)
    
    • 1

    输出为:http://python.io/ws?key1=value1&key2=value2

    各方法语法以及需要的控制参数
    语法 可选额外控制参数

    requests.get(url, params=None, **kwargs)	12
    requests.head(url, **kwargs)	12
    requests.post(url, data=None, json=None, **kwargs)	12
    requests.put(url, data=None, **kwargs)	12
    requests.patch(url, data=None, **kwargs)	12
    requests.delete(url, **kwargs)	12
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载