1 选择器
ID
1.1 Class
属性选择器:可以指定值来选择
后代选择器(包含选择器)
子选择器
1.2 Xpath
使用路径表达式在xml中进行导航
1.3 Xpath和css的区别:
Css更简洁
Xpath文件路径,看作目录树
XPath谓语很强大
1.4 Json
类似xml,但是更小更简洁
很方便,把字符串和字典来回切换
2 Xml处理的两种模式dom和sax的优劣
Dom把整个xml读入内存,解析为树,占用内存大, 解析慢
Sax流模式,边读边解析,占用内存小,解析快
Xml处理爬虫的三个重要内容:标签,属性,内容,处理方式主要是dom和sax
3 Xml—xpath—dom/sax
3.1 通过dom处理
小文本,处理的方便
#获取根节点
doc=minidom.parse('book.xml')
root=doc.documentElement
print(type(root))
print(dir(root))
print(root.nodeName)
books=root.getElementsByTagName('book')
for book in books:
titles=book.getElementsByTagName('title')
prices=book.getElementsByTagName('price')
title=titles[0].childNodes[0].nodeValue
price=prices[0].childNodes[0].nodeValue
print(title,price)
3.2 Sax爬虫
自己维护层级关系
处理大文本效率很高
一开始写DefaultSaxHandler
实现三个方法:start_element, end_element,char_data
4 正则表达式
方便的检查一个字符串是否与某种模式匹配
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
5 selenium
主要用于测试,简单的爬虫比较合适
用于爬虫的两个命令:find_element(s)_by_tag_name
Find_element(s)_by_css_selector
如果直接用request,不能处理js,也就是不能处理动态网页,而selenium可以动态调动模拟浏览器