zoukankan      html  css  js  c++  java
  • 爬虫 ---- BeautifulSoup的基础使用


    #BeautifulSoup的基础使用
    from bs4 import BeautifulSoup #导入bs4库
    html = "<p class='stylecss'><!--index page--></p><div id='divid'><ul id='ulid'><li>Menu Title</li><li>Body Content</li></ul></div><p>Ending</p>"
    soup = BeautifulSoup(html ,"lxml")    #创建对象
    soup.p['class'] = 'newcss'  #修改p标签的class
    #获取p标签的class
    print(soup.p.attrs)  
    print(soup.p.get('class'))
    print(soup.p['class'])
    
    r = soup.find_all('p')  #soup.find('p')显示第一个p标签及内容, .find_all显示所有的p标签及内容
    r = soup.p   # 同上一行find相同
    r = soup.find(class_='stylecss') #获取class为stylecss的标签及内容 r = soup.find(attrs = {'class':'stylecss'}) # 获取标签的内容文本 r = soup.p.string # cdata = CData(r) # print(cdata) r = soup.div.ul.li.string # if type(soup.p.string)==Comment: # r = soup.p.string # print(r) r = soup.ul.contents[1] # .contents[1]获取ul列表的第二个标签及内容 # .descendants循环获取当前页面的所有标签和标签内的内容 for child in soup.descendants: print(child) # .strings循环获取页面中显示的所有文本内容,不包括注释内容 for string in soup.strings: print(string) p = soup.li.parent.name # .parent获取页面中li的父级标签名 # .parents递归得到当前元素的所有父级标签节点名 li = soup.li.string for parent in li.parents: print(parent.name) r = soup.ul.find_parent() #获取当前节点标签的父节点及内容 r = soup.li.find_parents() #获取当前节点标签的所有父节点及内容 r = soup.ul.find_all_previous() r = soup.select('p') #获取所有的p标签及内容 r = soup.select('p')[1] #获取页面中的第二个p标签及内容 r = soup.select('#divid') r = soup.select('.stylecss') r = soup.select('div > ul') r = soup.select('ul > li')[1].get_text() print(r)
    Python解析器  
    
    1、Python标准库 ,使用方法:BeautifulSoup(markup, “html.parser”) ,优势:Python的内置标准库、执行速度适中、文档容错能力强
    
    2、lxml HTML 解析器 ,使用方法:BeautifulSoup(markup, “lxml”)     ,优势:速度快、文档容错能力强,但需要安装C语言库。
    
    3、lxml XML 解析器 ,使用方法:BeautifulSoup(markup, [“lxml”, “xml”]) 或 BeautifulSoup(markup, “xml”) ,优势:速度快、唯一支持XML的解析器,也需要安装C语言库。
    
    4、html5lib ,使用方法:BeautifulSoup(markup, “html5lib”) ,优势:最好的容错性、以浏览器的方式解析文档、生成HTML5格式的文档,但其速度慢,不依赖外部扩展。
  • 相关阅读:
    hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
    cf1114D 区间dp基础
    poj2411 状态压缩-铺地板题型-轮廓线解法(最优)
    poj3254 炮兵阵地弱化版,记数类dp
    poj2441状态压缩dp基础
    zoj3471 状态压缩dp基础
    北极通讯网络(最小生成树)
    黑暗城堡(生成树)
    关押罪犯(并查集)
    搭配购买(并查集+0/1背包)
  • 原文地址:https://www.cnblogs.com/lovele-/p/9225925.html
Copyright © 2011-2022 走看看