Published: 2017-03-05 20:10:00
By ytwan
In Items .
tags: Web
bs4
步骤
##01.第一步:导入 bs4 库
from bs4 import BeautifulSoup
##02.第二步 创建 beautifulsoup 对象
soup = BeautifulSoup ( open ( 'index.html' )) #缺省默认的解析器"html.parser"
soup = BeautifulSoup ( response . body , "html.parser" )
BeautifulSoup ( "<a></p>" , "lxml" )
BeautifulSoup ( markup , "xml" )
BeautifulSoup ( markup , "lxml-xml" )
BeautifulSoup ( "<a></p>" , "html5lib" )
soup = BeautifulSoup ( respone . body , "html5lib" , from_encoding = 'utf-8' ) ##缺省默认utf-8
soup = BeautifulSoup ( respone . body , "html5lib" , from_encoding = 'gb2312' )
##03.第三步-各种操作
soup . find_all ( name , attrs , recursive , text , ** kwargs )
##find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件
##CSS选择器
soup . select () ,返回类型是 list
说明
##Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,
##所有对象可以归纳为4种:
##Tag
soup 加标签名轻松地获取这些标签的内容
Tag ,它有两个重要的属性,是 name 和 attrs
tag 的 . content 属性可以将 tag 的子节点以列表的方式输
print soup . head . contents [ 0 ]
##NavigableString
##BeautifulSoup
##Comment
lxml 依托于ElementTree的选择器(seletors)
步骤
01. 引入
from scrapy.selector import Selector
from scrapy.http import HtmlResponse
02. 以 response 构造选择器 -- 还可以以文字 -- 在这里暂且不涉及
response = HtmlResponse ( url = 'http://example.com' , body = body )
sl = Selector ( response = response )
03. 各种操作
sl . xpath ( '//span/text()' ) . extract ()
说明
XPath is a language for selecting nodes in HTML or XML document
CSS is a language for applying styles to HTML documents
Regular expressions
方法返回类 SelectorList 的实例的列表
. xpath ()
. extract () 方法
. extract_first ()
. css ()
. extract () 方法
. extract_first ()
. re ()
. re_first ()
Xpath 语法,使用路径表达式在 XML 文档中进行导航,
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点
01. 路径表达式
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
02. Predicates -- 谓语用来查找某个特定的节点或者包含某个指定的值的节点。谓语被嵌在方括号中
/ bookstore / book [ last ()]
参考:
Beautiful Soup 4.2.0 文档 https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
lxml - XML and HTML with Python http://lxml.de/index.html
Selectors https://doc.scrapy.org/en/latest/topics/selectors.html#