美文网首页
PYTHON爬虫基础

PYTHON爬虫基础

作者: 楠昭 | 来源:发表于2019-12-06 21:25 被阅读0次

    一、 搞清楚数据的编码

    python3中统一使用Unicode编码,用4字节表示一个字符,而网络中的数据包用utf-8编码,所以需要进行编码转化


    编码转化

    二、 urllib 模块:处理http请求的模块

    专门处理http套接字,可以像处理文件一样处理网页

    from urllib import urlopen #ps:关于import和from xxx import xxx
    url='xxx'
    fhand = urlopen(url).read() #返回句柄
    

    三、beautifulsoup:用这碗美味的汤来解析网页

    from bs4 import BeautifulSoup
    soup = BeautifulSoup(fhand,'html.parser')
    

    四大对象种类

    其中soup是html转化后的树形文档,其每个节点都是python对象,所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoup , Comment

    1. Tag
    和html原生文档中标签相同

    • name属性获取Tag名称
    • 获取某个标签中内容:soup.xxx
      soup.a
    • 获取某个标签中某个属性: soup.xxx['yyy'] (使用字典)
      soup.p['class']
    • 获取子节点
      way1:使用tag的name属性多次调用
      tag = soup.article.div.ul.li
      way2:使用.contents属性返回该tag下子节点列表
      tag.contents
      way3:使用.children生成器遍历所有子节点
    • 获取父节点
      way1: 使用.parent获取父节点
      way2: 使用.parents 属性遍历所有的父辈节点
    tag = soup.article
    for p in tag.parents:
        print p.name
    
    • 获取兄弟节点
      使用.next_sibling .previous_sibling 属性

    2. NavigableString
    获得标签内的可遍历字符串
    soup.p.string

    3. BeautifulSoup
    BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag

    4. Comment
    处理html种注释

    文档树搜索

    • find(name , attrs , recursive , string , ** kwargs)
      只返回第一个满足条件的元素
    • find_all(name , attrs , recursive , string , ** kwargs)
      指定name搜索:find_all('a')
      指定属性搜索:find_all(class='xxx')

    CSS选择器
    soup.select('标签名')

    参考博文

    常用:
    find寻找第一个满足条件的情况
    find_all返回一个列表
    find('xxx',attrs='xxx')如:find('div', class_='result')找到class为result的第一个div

    相关文章

      网友评论

          本文标题:PYTHON爬虫基础

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