爬虫模块BeautifulSoup

Posted helenMemery

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫模块BeautifulSoup相关的知识,希望对你有一定的参考价值。

中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#

1.1      安装BeautifulSoup模块和解析器

1)         安装BeautifulSoup

         pip install beautifulsoup4

2)         安装解析器

         pip install lxml

  pip install html5lib

 

 

 

1.2      对象种类

  • Tag :   标签对象,如:<p class="title"><b>yoyoketang</b></p>,这就是一个标签
  • NavigableString :字符对象,如:这里是我的微信公众号:yoyoketang
  • BeautifulSoup   :就是整个html对象
  • Comment    :注释对象,如:!-- for HTML5 --,它其实就是一个特殊NavigableString

 

1.3      常用方法

# coding:utf-8
__author__ = \'Helen\'
\'\'\'
description:爬虫模块BeautifulSoup学习
\'\'\'
import requests
from bs4 import BeautifulSoup

r = requests.get("https://www.baidu.com/")
soup = BeautifulSoup(r.content,\'html5lib\')
print soup.a	#  根据tab名输出,只输出第一个
print soup.find(\'a\')	#	同上
print soup.find_all(\'a\')	# 输出所有a元素
	# 找出对应的tag,再根据元素属性找内容
print soup.find_all(\'a\',{\'href\':\'https://www.hao123.com\',\'name\':\'tj_trhao123\'})
# .contents(tag对象contents可以获取所有的子节点,返回的是list,获取该元素的直接子节点)
print soup.find(\'a\').contents[0]	# 输出第一个节点
print soup.find(\'div\',id=\'u1\').contents[1]	# 输出第二个节点
# .children(点children这个生成的是list对象,跟上面的点contents功能一样,但是不能通过下标读,只能for循环读)
for i in soup.find(\'div\',id=\'u1\').children:
	print i
# .descendants(获取所有的子孙节点)
for i in soup.find(class_=\'head_wrapper\').descendants:
	print i

  

以上是关于爬虫模块BeautifulSoup的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫之Beautifulsoup模块的使用

爬虫模块BeautifulSoup

爬虫入门手记03爬虫解析利器beautifulSoup模块的基本应用

爬虫模块介绍--Beautifulsoup

爬虫之beautifulsoup模块

爬虫系列之第2章-BS&Xpath模块