最近在写爬虫练手,但是发现匹配出来数据很少
以博客园为例,这个是我的正则
/http\:\/\/www\.cnblogs\.com\/' . $name . '\/[^\" ]+.html/i
然后匹配这位同学:http://www.cnblogs.com/hoojo/default.html?page=1
发现只有42条数据,但是这位同学明显不止42篇文章,请问如何优化我的正则
小伙看你根骨奇佳,潜力无限,来学PHP伐。
首先,你这个http://www.cnblogs.com/hoojo/default.html?page=1 只是第一页,第一页好像只有这么多篇文章吧?http://www.cnblogs.com/hoojo/default.html?page=2 是第二页。
首先,你要确定他的博客里面有多少页。你就从第二页http://www.cnblogs.com/hoojo/default.html?page=2 取它的总页数共6页: 上一页 1 2 3 4 5 6,再在你原来的代码外面加个 for 循环 http://www.cnblogs.com/hoojo/default.html?page={$page_number} 这样就好了。
共6页: 上一页 1 2 3 4 5 6
for 循环
http://www.cnblogs.com/hoojo/default.html?page={$page_number}
不太懂您的正则写法。
我数了下第一页一共50条文章,然后我是这么实现的:
<?php $aa = file_get_contents('http://www.cnblogs.com/hoojo/default.html?page=1'); preg_match_all ("|class=\"postTitle2\" href=\"(.*)\">|i", $aa, $m); var_dump($m[1]);
这样的结果就是文章链接数组了。
在测试过程中发现文章作者会把其他文章链接写在摘要里,并且被显示。所以您的方法会把摘要内的链接也读出来。 我这里是用文章原文链接的特性获取到的链接。 希望能够帮到你。
首先,你这个http://www.cnblogs.com/hoojo/default.html?page=1 只是第一页,第一页好像只有这么多篇文章吧?http://www.cnblogs.com/hoojo/default.html?page=2 是第二页。
首先,你要确定他的博客里面有多少页。你就从第二页http://www.cnblogs.com/hoojo/default.html?page=2 取它的总页数
共6页: 上一页 1 2 3 4 5 6
,再在你原来的代码外面加个for 循环
http://www.cnblogs.com/hoojo/default.html?page={$page_number}
这样就好了。不太懂您的正则写法。
我数了下第一页一共50条文章,然后我是这么实现的:
这样的结果就是文章链接数组了。
在测试过程中发现文章作者会把其他文章链接写在摘要里,并且被显示。所以您的方法会把摘要内的链接也读出来。
我这里是用文章原文链接的特性获取到的链接。
希望能够帮到你。