python 爬虫 2 (网页解析bs4、lxml、xpath、正则)

写在前面

bs4官方文档

https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

安装bs4

 pip install bs4

安装lxml

pip install lxml

1、bs4语法

1.1、soup=BeautifulSoup(html)

soup=BeautifulSoup(html)
在这里插入图片描述
也可以解析一个html文件

soup = BeautifulSoup(open('soup.html', encoding='utf8'))

1.2、soup.prettify()

按照html格式输出

soup.prettify()

1.3、soup.title

soup.标签名 ,可以直接获取该标签的内容
在这里插入图片描述

soup.a.attrs 返回一字典,里面是所有属性和值
soup.a['href'] 获取href属性
soup.a.string
soup.a.text
soup.a.get_text()   【注】当标签里面还有标签的时候,string获取的为None

1.4、soup.find(‘a’)

soup.find('a')
soup.find('a', class_='xxx')
soup.find('a', title='xxx')
soup.find('a', id='xxx')
soup.find('a', id=re.compile(r'xxx'))
【注】find只能找到符合要求的第一个标签,他返回的是一个对象

find_al、返回一个列表,列表里面是所有的符合要求的对象


soup.find_all('a')
soup.find_all('a', class_='wang')
soup.find_all('a', id=re.compile(r'xxx'))
soup.find_all('a', limit=2) 提取出前两个符合要求的a

1.5、select选择器

ret = soup.select('a')
ret = soup.select('#muxiong')
print(ret[0]['title'])

ret = soup.select('.wang')
print(ret)

ret = soup.select('div > a')
print(ret)

ret = soup.select('a[title=东坡肉]')

print(ret)

odiv = soup.select('.tang')[0]

ret = odiv.select('a')

常用的选择器
标签选择器、id选择器、类选择器
层级选择器**
div h1 a 后面的是前面的子节点即可
div > h1 > a 后面的必须是前面的直接子节点
属性选择器
input[name=‘hehe’]
select(‘选择器的’)
【注】返回的是一个列表,列表里面都是对象
【注】find find_all select不仅适用于soup对象,还适用于其他的子对象,如果调用子对象的select方法,那么就是从这个子对象里面去找符合这个选择器的标签

2、lxml使用

lxml只是一个解析文档的引擎,bs4用的时候语法无差异
在这里插入图片描述
lxml的特点是,它是c语言的,运行比较快

3、xpath语法

在这里插入图片描述

xpath教程
https://www.w3school.com.cn/xpath/index.asp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、正则语法

正则教程:
https://www.runoob.com/python/python-reg-expressions.html

python正则:

re.match     只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败
re.search    匹配整个字符串,直到找到一个匹配。
re.sub       用于替换字符串中的匹配项。
re.compile   函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
re.finditer  在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
re.split     方法按照能够匹配的子串将字符串分割后返回列表

在这里插入图片描述

发布了136 篇原创文章 · 获赞 30 · 访问量 7076

猜你喜欢

转载自blog.csdn.net/a__int__/article/details/104642464