python 用BeautifulSoup 查找HTML元素,其中重要的函数有:
- find_all (self,name=None,atrs={}.recursive=True,text=None,limit=None,**kwargs),self表面它是一个类成员函数;name是要查找的tag元素名称,默认是None,如果不提供,就是查找所有的元素; attrs是元素的属性,它是一个字典,默认是空,如果提供就是查找有这个属性的元素;find_all函数返回查找到的所有满足要求的元素节点,如果只查找一个元素节点,就可以使用find函数。需要注意的是find_all函数返回查找到的所有指定的元素的列表,每个元素是一个bs4.element.Tag对象,而find是返回一个节点,不是一个列表。
- CSS语法 CSS语言是一种用来表现HTML或XML等文件样式的计算机语言。不仅可以静态地修饰网页,还可以配合各种脚本语言动态的对网页各元素进行格式化。
举例说明:
soup.select(“a[href=‘http://examplie.com/elsie’]”) 查找href=“http://example.com/elsie"的节点;
soup.select(“a[herf$=‘sie’]”)查找以‘sie’结尾的节点;
soup.select(“a[herf^=‘http://example.com’]”)查找hre以”http://example.com“开始的节点
soup.select(“a[herf*=‘example’]”)查找href的值中包含”example“字符串的节点
soup.select(“div p”)查找所有节点下面所有子孙节点
soup.select(“div > p”) 查找所有节点下面的所有直接子节点,不包含孙节点;
soup.select(“div ~ p”)查找后面的所有同级别的兄弟节点;
下面通过一个爬虫实例来说明:
刚开始学习爬虫的时候,就想着爬虫涉及的内容好多,我是不是还得再去学习html语法,就给自己造成了一种负担,可是通过一个实例去学习爬虫就会发现,有的东西是固定的,有的内容是不需要深刻理解的,而爬取的内容是需要花时间详细分析的。