1.写一个网页爬虫的时候遇到了一个div嵌套问题,即一个大的div里面有很多小的div,如:
<div class="mytext">
<strong>XXX</strong>
<div class="content">XXXXX</div>
</div>
<p class="comment">XXXX</p>
这样一个类型,如果爬取内层的div是很简单的,正则表达式十分好写:
"/<div class=\"content\">(.*?)<\/div>/"
但是如果要爬取外面的div该怎么办呢?
当时我的做法是继续寻找,找出该段内容后面的具有识别该段内容能力的内容。
如上式,在正则表达式中加入对id为comment的p标签的检索:
"/<div class=\"mytext\">(.*?)<\/div>[\\s]*<p class=\"comment\">/"
2.当在爬取网页的时候,获得的html内容肯定有空格、换行、制表符之类的内容,这样的内容对正则表达式很不友好。
遇到这样的网页,该如何爬取呢?
我的做法是在获取到该网页的html内容时,将其进行这些空白字符的替换。在php中,对整个网页进行字符替换如下:
str_replace(array(" ","\n","\t"),"",$html);
上述只是一个方式,而且并不是最高效的。意图说明这样一种处理问题的方法。