网络爬虫基础知识

in 知识点 with 0 comment

Requests类:

requests.get(url,params=None,**kwargs) 请求获得资源 
    **kwargs 控制访问参数,可选项:
        *params:字典或字节序列,修改 
        *data:字典,字节序列或文件对象 
        *json:JSON格式的数据 
        *headers:HHTP定制头 
        cookies:字典或CookieJar 
        auth:元组,支持HTTP认证功能 
        files:字典类型,传输文件 
        timeout:设定超时时间(s) 
        proxies:字典类型,设定访问代理服务器,可增加登录认证 
        **其余四个略 
requests.head(url,**kwargs) 获得该资源头部信息 
requests.post(url,data=None,json=None,**kwargs) 附加新数据 
requests.put(url,data=None,**kwargs) 向URL位置储存一个资源,并覆盖原资源 
requests.patch(url,data=None,**kwargs) 局部更新URL位置资源(比put节省带宽) 
requests.delete(url,**kwargs) 删除URL位置储存资源 

requests.ConnectionError 网络连接异常 
requests.HTTPError  HTTP错误异常 
requests.TooManyRedirects 最大重定向次数 
requests.ConnectTimeout 连接远程服务器超时异常 
requests.Timeout 请求URL超时 

Response类:

.status_code 返回值为200说明抓取成功 
.text url对应的页面内容 
.encoding 控制编码方式 
.apparent_encoding 响应的内容文本中分析出的编码方式 
.content 返回二进制形式 
.headers 返回头部信息 
.raise_for_status 判断返回状态,异常会引发HTTPError异常 

BeautifulSoup类:


* 库: 
    > from bs4 import BeautifulSoup
* 元素:
    Tag 标签,分别用<>和</>开头结尾
    Name 标签名,如<p></p>名字为p.格式:<tag>.name
    Attribute 标签属性,键值对形式组织.格式:<tag>.attrs
        <Tag>.attrs[' '] 可取出该标签中的某种属性
        <tag>.get(' ') 也可用于取出改标签中的某种属性
    NavigableString 标签内非属性字符串,格式:<tag>.string
    Comment 标签内字符串的注释部分

soup = BeautifulSoup('<p>data</p>' ,  'html.parser')
soup.prettify() 美化HTML格式输出
Soup.find_all(name,attrs,recursive,string,**kwargs) 返回列表,储存查找信息
    <tag>(…) 等价于<tag>.find_all(…)
    Name:对标签名称检索的字符串(True表示所有标签名称)
    Attrs:对标签属性检索的字符串
    Recursive:True表示对所有子孙检查,False表示只对儿子节点检查
    String:标签navigablestring中的检索字符串
<>.find() 搜索只返回一个结果,字符串类型
<>.find_parents() & <>.find_parent() 先辈节点中搜索
<>find_next_siblings() & <>.find_next_sibling() 后续平行节点中搜索
<>find_previous_siblings() & <>.find_previous_sibling() 前序平行节点中搜索

下行遍历:
<tag>.contents 子节点的列表,列表形式储存(len可输出列表长度)
<tag>.children 儿子节点的迭代类型(用于循环遍历儿子节点)
<tag>.descendants 子孙节点的迭代类型(用于循环遍历子孙节点)
[eg:   for child in <tag>.descendants   print(child) ]
上行遍历:
<tag>.parent 节点的父亲标签
<tag>.parents 节点先辈标签的迭代类型(用于循环遍历先辈)
平行遍历:
<tag>.next_sibling 返回HTML文本顺序下一个平行节点标签
<tag>.previous_sibling 返回HTML文本顺序上一个平行节点标签
<tag>.next_siblings 迭代类型(用于循环遍历后续平行标签)
<tag>.previous_siblings 迭代类型(用于循环遍历前续平行标签)

Format属性:

Eg: tplt = "{0:^10}{1:{3}^10}{2:^10}"

   :  引导符号
<填充> 用于填充的单个字符 -- chr(12288)表示中文空格
<对齐> <左对齐 >右对齐 ^居中对齐
<宽度> 槽的设定输出宽度
  ,  数字的千分位分隔符(整数,浮点数)
<.精度> 浮点数小数部分精度或字符串最大输出长度
<类型> 
    整数类型 b,c,d,o,x,X
    浮点数类型 e,E,f,%

信息标记形式:

XML-标签形式构建[Internet上信息交互与传递]
    <name …. >…</name>
    <name … /> 空元素
    <!--   --> 注释形式

JSON-有类型的键值对[移动应用云端和节点的信息通信,无注释]
    "key":"value"
    "key":["value1" , "value2"]  多组数据
    "key":{ "subkey" : "subvalue" } 键值对嵌套
    
YAML-无类型的键值对(缩进表示所属关系)[各类系统的配置文件,有注释易读]
    key : value
    Key : #Comment(注释)
    - Value1 (并列关系)
    - Value2
    Key :
        Subkey : subvalue (包含关系)

HTTP协议:

URL格式: http://host[:port][path] 
    (host:合法的Internet主机域名或IP地址)  
    (port:端口号,缺省端口为80) 
    (path:请求资源路径) 

扫描二维码,在手机上阅读!
Responses