`
pqcc
  • 浏览: 124882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Beautiful Soup 学习笔记

阅读更多

BeautifulSoup 是做 HTML 解析用的,功能非常强大,比我之前见识过的 JAVA 以及Python 版本的 HTML Parser 要强大很多。 最喜欢 BeautifulSoup 的 DOM 选择器,很有 JQuery 的味道, 喜欢 JQuery 的开发人员应该会马上喜欢上他。

 

 

下面只是我个人做的一些学习笔记,当作手册来查阅的。

 

1. titleTag = soup.html.head.title
2. len(soup('p'))  多少个 p.
3. soup.findAll('p', align="center")
4. print soup.prettify()
5. navigate soup的一些方法:
    soup.contents[0].name
    soup.contents[0].contents[0].name
    head = soup.contents[0].contents[0]
    head.next
    head.nextSibling.name
    head.nextSibling.contents[0]
6. titleTag = soup.html.head.title
   # <title>Page title</title>
   titleTag.string: 返回 <title></title> 之间的内容.
7. <p id="firstpara" align="center">This is paragraph <b>one</b>. </p>
   soup('p', align="center")[0]['id']    (# u'firstpara')
   soup.find('p', align=re.compile('^b.*'))['id']
8. 修改 soup
    titleTag['id'] = 'theTitle'
    titleTag.contents[0].replaceWith("New title")
    soup.p.replaceWith(soup.b)
    soup.body.insert(0, "This page used to have ")
    soup.body.insert(2, " &lt;p&gt; tags!")
9. 循环:
   for incident in soup('td', width="90%"):
10. BeautifulStoneSoup的一个主要缺点就是它不知道如何处理自结束标签.
11. prettify 方法添加了一些换行和空格以便让文档结构看起来更清晰.
    str和unicode函数不会剔除这些节点,他们也不会添加任何空白符。
12. heading = soup.h1
    str(heading) // 输出结果: # '<h1>Heading</h1>'   
    heading.renderContents() // 输出结果:  # 'Heading'
13. firstPTag, secondPTag = soup.findAll('p')
    firstPTag['id']    // 输出结果: # u'firstPara'
    secondPTag['id']    // 输出结果: # u'secondPara'
14. soup.p跳到文档中的第一个 <P> tag。
    soup.table.tr.td 跳到文档总第一个table的第一列第一行。
    获得第一个<FOO> 标签另一种方式是使用.fooTag 而不是 .foo。
    例如,soup.table.tr.td可以表示为soup.tableTag.trTag.tdTag
15. findAll和 find 仅对Tag对象以及顶层剖析对象有效,但 NavigableString不可用。
16. The basic find method: findAll(name, attrs, recursive, text, limit, **kwargs)
17. 查找所有的<TITLE>和<P>标签:
    (1). soup.findAll(['title', 'p'])
    (2). soup.findAll({'title' : True, 'p' : True})   (更快一些)
18. 传一个True值,这样可以匹配每个tag的name:也就是匹配每个tag。
   allTags = soup.findAll(True)
   [tag.name for tag in allTags]
   [u'html', u'head', u'title', u'body', u'p', u'b', u'p', u'b']
19. 查找两个并仅两个属性的标签(tags):
    soup.findAll(lambda tag: len(tag.attrs) == 2)
    寻找单个字符为标签名并且没有属性的标签:
    soup.findAll(lambda tag: len(tag.name) == 1 and not tag.attrs)
20. keyword参数用于筛选tag的属性。下面这个例子是查找拥有属性align且值为 center的所有标签:
    soup.findAll(align="center")
    soup.findAll(id=re.compile("para$"))
    soup.findAll(align=["center", "blah"])
    soup.findAll(align=lambda(value): value and len(value) < 5)
    特殊值: soup.findAll(align=True)
            [tag.name for tag in soup.findAll(align=None)]
    soup.findAll(attrs={'id' : re.compile("para$")})
21. 使用CSS类查找:
    soup.find("tagName", { "class" : "cssClass" })
    soup.findAll(text="one")
    soup.findAll(text=u'one')
    soup.findAll(text=["one", "two"])
    soup.findAll(text=re.compile("paragraph"))
    soup.findAll(text=lambda(x): len(x) < 12)
22. limit 参数:
    soup.findAll('p', limit=1)
23. find方法类似findAll的函数,但只返回第一个可匹配对象。
24. findNextSiblings(name, attrs, text, limit, **kwargs):
    findPreviousSiblings(name, attrs, text, limit, **kwargs)
    findAllNext(name, attrs, text, limit, **kwargs)
    findAllPrevious(name, attrs, text, limit, **kwargs)
    findParents(name, attrs, limit, **kwargs)
25. subtree = soup.a
    subtree.extract()
26. soup.find(text="Argh!").replaceWith("Hooray!")

0
0
分享到:
评论

相关推荐

    Beautiful Soup学习笔记(对我自己比较常用)

    本文仅为学习笔记,作用仅为方便自己查阅复习使用,具体学习路线参考 Beautiful Souo 4.2.0文档 文章目录TagnameAttributestag属性的删除tag属性的修改多值属性tag中的字符串注释及特殊字符串 Tag tag中两个最重要的...

    python爬虫必备库BeautifulSoup4学习笔记

    - Beautiful Soup 4.2.0 文档 - 对象的种类 - Tag 标签 - Name Tag的名字 - Attributes 操作类似于字典 比如id,class_ - 多值属性 - 可以遍历的字符串 1.字符串常被包含在tag内.Beautiful Soup用 ...

    BeautifulSoup.zip

    近日实际学习和使用爬虫的python工具BeautifulSoup的精选资料包,全部是整理的.md笔记档,目录结构清晰,特分享以供爬虫学习、使用者速学速查之便,共有三份文档: Beautiful Soup 4.4.0 文档,最新的文档,作参考...

    python爬虫学习笔记(二)——解析内容

    – 获取到网页数据后,我们发现我们想...Beautiful Soup库的安装(Beautiful Soup库是解析、遍历、维护“标签树”的功能库): 按WIN键+R键打开运行,输入cmd后回车进入命令提示符 pip install beautifulsoup4 然而,

    Python 网络爬虫(Web Crawlers)学习笔记。.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    路飞学城爬虫开发+APP逆向超级大神班学习笔记.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    python爬虫仓库,包括一些学习笔记,例如基础、简单的画图词云数据分析。主要还是爬虫.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    Python爬虫包BeautifulSoup简介与安装(一)

    学习使用的书籍是Python网络数据采集(Ryan Mitchell著),大约是一些笔记的整理。 Beautiful Soup的简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下: Beautiful Soup...

    python网络爬虫学习笔记(1)

    2、Beautiful Soup 模块使用Python编写,速度慢。 安装: pip install beautifulsoup4 3、 Lxml 模块使用C语言编写,即快速又健壮,通常应该是最好的选择。 (二) Lxml安装 pip install lxml 如果使用lxml的css...

    网络爬虫(Python语言系列专题).pdf

    自己的python爬虫学习笔记,这是一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者。读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会编写简单的 Python 爬虫。 这篇 Python 爬虫...

    平时学习爬虫的一些代码笔记以及案例实战.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

    爬虫学习任务笔记概要(第四次)–实战某新闻爬取项目含代码

    2、用beautiful soup4解析缓存下来的data 3、加载pandas库,将data导出至csv文件 import time from selenium import webdriver driver=webdriver.Chrome(executable_path="C:\Program Files\Anaconda3\chromedriver....

    python3网络爬虫笔记与实战源码.zip

    记录python爬虫学习全程笔记、参考资料和常见错误,约40个爬取实例与思路解析,涵盖urllib、requests、bs4、jsonpath、re、 pytesseract、PIL等常用库的使用。 爬虫(Web Crawler)是一种自动化程序,用于从互联网...

    python爬虫的学习和代码模板的笔记记录。涉及文本数据、图片数据、音频数据、视频数据的抓取。.zip

    常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用...

Global site tag (gtag.js) - Google Analytics