如何获取指定的标签的内容是解析网页爬取数据的必要手段,比如想获取
...
,而不是希望的父div.
这样的div标签,通常有三种办法,
"将会匹配子div的结尾部分
1)用字符串查找方法,然后切分字符串(或切片操作),如str.index(patternStr)或str.find(patternStr),这种方法快,但步骤多,因为要去头去尾。
2)用正则表达式,比如'
([\s\S]+?)
',通过正则表达式的括号,可以获取匹配的内容,即
import re
def getTags(html):
reg = r'
([\s\S]+?)
'
pattern= re.compile(reg)
tags= re.findall(pattern, html)
return tags
不过正则表达式仍有缺点,例如'
([\s\S]+?)
'括号中的问号表示非贪婪匹配,正常情况下可以匹配到所需要的内容,但如果class="result_info"的div中还嵌套了子的div,那么正则表达式的后半部分"
假如有这样一个html:
some paragraph test 1
some paragraph test 2
some contents in sub div
backend content here
那么backend contents here这段内容将会匹配不到,正则表达式将会将id为div_sub的