当前位置: 移动技术网 > IT编程>脚本编程>Python > python3 爬虫笔记(一)beautiful_soup

python3 爬虫笔记(一)beautiful_soup

2018年09月24日  | 移动技术网IT编程  | 我要评论

玉檀为什么被蒸,巾帼枭雄之义海云天,御龙在天凤仪亭

很多人学习python,爬虫入门,在python爬虫中,有很多库供开发使用。

用于请求的urllib(python3)和request基本库,xpath,beautiful soup,pyquery这样的解析库。其中xpath中用到大量的正则表示式,对于新手来说,写正则很容易出错,在这里,从beautiful soup开始说。

from beautiful_soup.constant import html_text

from bs4 import beautifulsoup
soup = beautifulsoup(html_text, 'lxml')
# 将html文件以标准的格式输出, 会自动补全缺失的html结构
print(soup.prettify())
# 获取title标签的内容
print(soup.div.string)
# 获取名称
print(soup.div.name)
# 获取属性 属性值多个,所以返回值为list列表
print(soup.div.attrs)
# 元素选择可以嵌套 ,这样的方式在多个的情况下,只取第一个,
# 比如body中有多个div,这里取了第一个
print(soup.body.div.a.attrs)

# contents 属性获取直接的子节点 children属性也是如此

用属性选择较快,但是遇到复杂的情况,就很不灵活,这时候我们需要调用beautiful_soup中的一些方法# find_all 查询所有符合条件的元素
# find_all(name, attrs, recursive, text, **kwargs)
# name是属性名 attrs是属性
print(soup.find_all(name="ul"))

for ul in soup.find_all(name="ul"):
print(ul.find_all(name="li"))
# 属性传入夫人参数为字典格式
print(soup.find_all(attrs={"class": "js-geo-city"}))

# text
print(soup.find_all(text=re.compile("热")))

# find() 用法和find_all()一致,只不过返回的是单个元素,匹配到的第一个

# 其他方法
find_parents() # 返回所有的祖先节点
find_parent() # 直接返回父节点

find_next_siblings() # 返回后面所有的兄弟节点
find_next_sibling() # 返回后面第一个兄弟节点

find_previous_siblings() # 返回前面所有的兄弟节点
find_pervious_sibling() # 返回前面第一个兄弟节点

# css选择器 select()
print(soup.select("ul li"))


如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网