博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Beautiful Soup学习
阅读量:6587 次
发布时间:2019-06-24

本文共 2517 字,大约阅读时间需要 8 分钟。

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  • Tag

    • print soup.title    #<title>The Dormouse's story</title>
    • 两个重要属性 name和attrs  soup.title.name 输出标签名字 soup.title.attrs 输出标签属性
    • soup.title.string输出标签内部文字
  • NavigableString

  • BeautifulSoup

  • Comment

http://cuiqingcai.com/1319.html暂时学到这里

 

 

# == find_all()之搜索标签名称 ============ OK    # result = soup.find_all('dl') # OK    # == find_all()之搜索标签属性 ============ not all OK # result = soup.find_all(id='newlist_list_div') # OK # result = soup.find_all(href=re.compile('.htm')) # Failed 竟然不支持href搜索,和官方说的不一样 # result = soup.find_all(name='vacancyid') # Failed 不支持标签的name属性搜索 # == find_all()之按CSS搜索 ============ OK # result = soup.find_all('div', class_='clearfix') # OK # result = soup.find_all('div', class_=re.compile('newlist_detail')) # OK # result = soup.find_all(class_=re.compile('newlist_detail')) # OK # == find_all()之按内容text搜索 ============ # find_all()加上text参数后, # 返回的是字符串!而不是tag!! # 类型为:
# result = soup.find_all(text='会计') # OK 内容必须完全相等才算!(不含子标签) # result = soup.find_all(text=u'数据') # OK 内容必须完全相等 无所谓unicode了 # result = soup.find_all(text=re.compile(u'学历:')) # OK unicode是绝对要!否则不行!
下面总结了在BeautifulSoup中的语法搜索:        标签搜索,如:'input' ,搜索所有标签为input的元素        宽泛路径,如:'body a' ,就是body内所有a元素        绝对路径,如:'body > div > div > p' ,必须完全符合路径才能搜到        ID搜索  ,如:'#tag-1' ,搜索id为tag1的标签        混合搜索,如:'div #tag1', 搜索id为xx的div标签            'div[class*=newlist_detail] ~ div[class*=newlist_detail]' ,大混合        属性存在,如:'a[href]' ,搜索所有存在href属性的a标签        类名搜索,如:'[class=clearfix]' ,找到class名等于clearfix的标签            '[class^=newlist_detail]' ,找到class名中以"newlist_detail"开头的标签            '[class$=zwmc]'           ,找到class名中以"zwmc"结尾的标签            '[class*=clearfix]'       ,找到class名中包含"zwmc"的标签        兄弟搜索,如:            '#links ~ .clearfix' ,找到id为links标签的所有class等于"clearfix"的兄弟标签            '#links + .clearfix' ,找到id为links标签的下一个class等于"clearfix"的兄弟标签        序列搜索,如:'p nth-of-type(3)' ,这个说白了就是选择第3个p标签            'p nth-of-type(odd)' 表示奇数的p标签            'p nth-of-type(even)' 表示偶数的p标签            'p nth-of-type(n)' 表示所有的p标签            'p nth-of-type(3n)' 表示3的倍数的p标签            'p nth-of-type(4n+1)' 表示4的倍数加1的p标签,如第5个、第9个    '''    # result = soup.select('dl > p') # OK tag路径搜索    # result = soup.select('div[class*=newlist_detail] ~ div') # OK 各种混合搜索 # result = soup.select('[class*=zwmc]') # OK 各种混合搜索 con = soup.select('div[class^=newlist_detail]')[0] result = con.select('[class*=zwmc]') # print type(result[0])
 

转载于:https://www.cnblogs.com/thouger/p/5109230.html

你可能感兴趣的文章
IOS判断用户的网络类型(2/3/4G、wifi)
查看>>
PHP中如何对二维数组按某个键值进行排序
查看>>
SharePoint 2013 EventHanlder工具
查看>>
jQuery和javascript的区别
查看>>
【283】ArcMap 中河流字体设置
查看>>
doctest --- 一个改善python代码质量的工具
查看>>
[LeetCode] 4. Median of Two Sorted Arrays
查看>>
hdu1290
查看>>
hdu2141Can you find it?
查看>>
值类型和引用类型 (转)
查看>>
Abstract (抽象类、接口、重写、覆写、重载)
查看>>
Axure RP 8 下载 激活可以使用的授权码、用户名、秘钥等
查看>>
20155303 2016-2017-2 《Java程序设计》第四周学习总结
查看>>
各种 mv power cell
查看>>
设计模式二之工厂模式
查看>>
c语言基础课第三次作业
查看>>
成本最低的Elance提现方式 — Moneybookers
查看>>
使用Settings Bundle为程序添加设置项(续)使用plist文件永久存储
查看>>
MogileFS系统简单配置实例
查看>>
转:禁止360随身wifi驱动自动安装
查看>>