• Python网络爬虫入门篇


    1.  预备知识

    学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。

    2. Python爬虫基本流程

    a. 发送请求

    使用http库向目标站点发起请求,即发送一个Request,Request包含:请求头、请求体等。 

    Request模块缺陷:不能执行JS 和CSS 代码。

    b. 获取响应内容

    如果requests的内容存在于目标服务器上,那么服务器会返回请求内容。

    Response包含:html、Json字符串、图片,视频等。

    c. 解析内容

    对用户而言,就是寻找自己需要的信息。对于Python爬虫而言,就是利用正则表达式或者其他库提取目标信息。

    解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等

    解析json数据:json模块

    解析二进制数据:以wb的方式写入文件

    d. 保存数据

    解析得到的数据可以多种形式,如文本,音频,视频保存在本地。

    数据库(MySQL,Mongdb、Redis)

    文件

    3. Requests库入门

    Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。

    3.1 Requests库安装和测试

    安装:

    Win平台:以“管理员身份运行cmd”,执行 pip install requests

    测试:

    3.2 Requests库的7个主要方法

     方法  说明
     requests.request()  构造一个请求,支撑一下个方法的基础方法。
     requests.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

    带可选参数的请求方式:

    requests.request(method,url,**kwargs)

    method:请求方式,对应get/put/post等7种

    url:获取页面的url链接

    **kwargs:控制访问的参数,均为可选项,共以下13个

    params:字典或字节系列,作为参数增加到url中

    >>> kv = {'key1':'value1','key2':'value2'}
    >>> r = requests.request('GET','http://python123.io/ws',params=kv)
    >>> print(r.url)
    https://python123.io/ws?key1=value1&key2=value2

    data:字典、字节系列或文件对象,作为requests的内容

    1

    2

    3

    4

    >>> kv = { 'key1':'value1','key2':'value2'}

    >>> r = requests.request('POST','http://python123.io/ws',data=kv)

    >>> body = '主题内容'

    >>> r = requests.request('POST','http:///python123.io/ws',data=body)

    json:JSON格式的数据,作为equests的内容

    1

    2

    >>> kv = { 'key1':'value1','key2':'value2'}

    >>> r = requests.request('POST','http://python123.io/ws',json=kv)

    headers:字典,HTTP定制头

    1

    2

    >>> hd = { 'user-agent':'Chrome/10'}

    >>> r = requests.request('POST','http://www.baidu.com',headers=hd)

    cookies:字典或cookieJar,Request中的cookie

    files:字典类型,传输文件

    1

    2

    >>> f = { 'file':open('/root/po.sh','rb')}

    >>> r = requests.request('POST','http://python123.io/ws',file=f)

    timeout:设置超时时间,秒为单位。

    1

    >>> r = requests.request('GET','http://python123.io/ws',timeout=30)

    proxies:字典类型,设置访问代理服务器,可以增加登录验证。

    1

    2

    3

    >>> pxs = { 'http':'http://user:pass@10.10.10.2:1234',

    ... 'https':'https://10.10.10.3:1234'}

    >>> r = requests.request('GET','http://www.baidu.com',proxies=pxs)

    allow_redirects:True/False,默认为True,重定向开关

    stream:True/False,默认为True,获取内容立即下载开关

    verify:rue/False,默认为True,认证SSL证书开关

    Cert:本地SSL证书路径

    auth:元组类型,支持HTTP认证功能

    3.3 Requests库的get()方法

     

    3.4 Requests的Response对象

    Response对象包含服务器返回的所有信息,也包含请求的Request信息

    Response对象的属性

  • 相关阅读:
    【位运算】只出现一次的数字
    数据结构 堆——详细动画图解,形象理解
    hadoop运行WordCount时,Input path does not exist错误原因
    MySQL数据表内容查询(一)
    Java SPI的原理和实践
    【数据结构】经典八大排序算法(万字大总结+动图)
    【计算机考研408-计算机网络-奈氏准则】什么时候是理想低通信道、什么时候是理想带通信道?
    一文详解ATK Loss论文复现与代码实战
    微信小程序使用echarts实现条形统计图功能
    nanodet训练自己的数据集、NCNN部署到Android
  • 原文地址:https://blog.csdn.net/m0_59485658/article/details/127989005