用python写爬虫的时候,我们需要提取网页的数据,这时就用到BeautifulSoup或者XPath,学会一种并且掌握已经足够用了,我建议用xpath。
BeautifulSoup和XPath的原理不一样,BeautifulSoup是基于DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多。而lxml只会局部遍历。
BeautifulSoup是一个第三方的Python库,BeautifulSoup是用python写的,而XPath是一门语言,技术。xpath是用c写的,所有速率上可想而知。
以下是我在工作中遇到的,并且觉非常实用的知识点,陆续会在这里记录那些觉得工作中或者项目中非常实用的xpath技术:
- string()函数:string()函数会得到所指元素的所有节点文本内容,这些文本将会被拼接成一个字符串。如:xpath('string(//div[@id="info"])'),id="info"里面的所有标签文本内容会拼接成一个字符串,这种情况常用于爬虫中一段文本内容嵌在多个标签之中。
- contains()函数:contains 匹配一个属性值中包含的字符串,有时候我们想获取多个标签里面的数据,但是标签的属性值又不完全一样,这时候就可以用contains函数,