1. # import module
  2. from bs4 import BeautifulSoup
  3. # with requests.request
  4. soup = BeautifulSoup(res.content, 'lxml')

select 使用技巧

  1. # 查询某一个特定的 HTML Tag 的方法
  2. soup.select("a")
  3. # 查询某个特定的 class 的方法
  4. soup.select(class="class_name")
  5. # 查询某个特定的 id 的方法,查询条件前加上#
  6. soup.select("#id_name")
  7. # 通过使用类名来进行查找,查询条件前加上.
  8. soup.select(".class_name")
  9. --- 组合条件查询,用于缩小范围 ---
  10. # 仅在Head内查询p标签
  11. soup.select("head p")
  12. # 仅在body中的h6标签中查找a标签
  13. soup.select("body h6 a")

  1. <div class="top-nav">
  2. <ul>
  3. ...
  4. <li class="cur"><span>网页</span></li>
  5. href="http://zhihu.sogou.com/" uigs-id="nav_zhihu" id="zhihu">知乎</a></li>
  6. <li><a onclick="st(this,'40030500','pic')" href="http://pic.sogou.com" uigs-id="nav_pic" id="pic">图片</a></li>
  7. ...
  8. </ul>
  9. </div>
  1. li = bs.select('.top-nav ul li')
  2. print("result len is", len(li))
  3. for tag in li:
  4. print(tag)

select 返回的是一个 list

通过过下标,可以获取到对应的内容

  1. for user in list:
  2. print(user)=<a title="郭大侠" user-id="1802863164" class="J_card" href="/member/1802863164">郭大侠</a>
  • 比如要打印出上述的user-id,可以使用 print(user['user-id'])
  • 比如要打印出上述的title,可以使用 print(user['title'])

打印HTML Tag 内的文本

  1. # .string 在获取到的tag后面增加
  2. for user in list:
  3. print(user)=<a title="郭大侠" user-id="1802863164" class="J_card" href="/member/1802863164">郭大侠</a>
  4. print(user.string)