Code
# import module
from bs4 import BeautifulSoup
# with requests.request
soup = BeautifulSoup(res.content, 'lxml')
select
使用技巧
# 查询某一个特定的 HTML Tag 的方法
soup.select("a")
# 查询某个特定的 class 的方法
soup.select(class="class_name")
# 查询某个特定的 id 的方法,查询条件前加上#
soup.select("#id_name")
# 通过使用类名来进行查找,查询条件前加上。
soup.select(".class_name")
--- 组合条件查询,用于缩小范围 ---
# 仅在 Head 内查询 p 标签
soup.select("head p")
# 仅在 body 中的 h6 标签中查找 a 标签
soup.select("body h6 a")
<div class="top-nav">
<ul>
...
<li class="cur"><span>网页</span></li>
href="http://zhihu.sogou.com/" uigs-id="nav_zhihu" id="zhihu">知乎`</li>
<li><a onclick="st(this,'40030500','pic')" href="http://pic.sogou.com" uigs-id="nav_pic" id="pic">图片`</li>
...
</ul>
</div>
li = bs.select('.top-nav ul li')
print("result len is", len(li))
for tag in li:
print(tag)
select
返回的是一个 list
通过过下标,可以获取到对应的内容
for user in list:
print(user)=<a title="郭大侠" user-id="1802863164" class="J_card" href="/member/1802863164">郭大侠`
- 比如要打印出上述的 user-id,可以使用
print(user['user-id'])
- 比如要打印出上述的 title,可以使用
print(user['title'])
打印 HTML Tag 内的文本
# .string 在获取到的 tag 后面增加
for user in list:
print(user)=<a title="郭大侠" user-id="1802863164" class="J_card" href="/member/1802863164">郭大侠`
print(user.string)