04 BeautifulSoup小实例

来源:互联网 发布:网络互动活动 编辑:程序博客网 时间:2024/04/28 20:40

”’
Created on 2017年6月6日

@author: v_huxiaoting
”’
import re
from bs4 import BeautifulSoup
html_doc = “””
The Dormouse’s story

The Dormouse’s story

Once upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well.

“””
soup = BeautifulSoup(
html_doc,
“html.parser”
)
print(“获取所有的链接”)

links = soup.find_all(‘a’)

for link in links:
print(link.name,link[‘href’],link.get_text())

print(“获取Lacie的链接”)

link_node = soup.find(‘a’,href=”http://example.com/lacie”)
print(link_node.name,link_node[‘href’],link_node.get_text())

到这里,因为看的是Python2.x的教程,所以,总是出现各种坑。这个坑踩的有点久,是因为之前按照Python2的写法
soup = BeautifulSoup(
html_doc,
“html.parser”,
from_encoding=”utf-8”
)
一直以为是别的地方出问题,结果是因为这个字符编码。
原因是因为:Python3 缺省的编码是unicode, 再在from_encoding设置为utf8, 会被忽视掉,导致报错,而影响其他的代码。
使用正则进行匹配

print(‘正则匹配’)
link_node1 = soup.find(‘a’,href=re.compile(r”ill”))

re.compile() 正则匹配
r表示不进行转义

print(link_node1.name,link_node[‘href’],link_node1.get_text())

获取p段落文字

print(“获取p段落文字”)
p_node = soup.find(‘p’,class_=’title’)
print(p_node.name,p_node.get_text())