PHP开发-微信公众号文章采集原理及思路

优采云 发布时间: 2020-06-22 08:03

  

  之前有发布一篇文章,简单写了一下文章内容页面的爬取。近日又写了一下爬取文章列表,可用于采集公众号文章。

  在搜索引擎上搜:搜狗陌陌文章爬取

  可发觉一大堆借助了 搜狗 的陌陌搜索功能去爬取并采集微信公众号文章的内容。

  也可以发觉,都是用 Python 写的。而本文一直采用 PHP 编写以达到同样疗效,文章仅讲解爬取原理及思路,用于学习研究。

  打开 搜狗 可以随意输入一个关键词搜索公众号文章。

  

  此时注意看 URL 地址栏

  https://weixin.sogou.com/weixin?type=2&s_from=input&query=%E4%B8%8D%E8%B4%A5%E5%90%9B&ie=utf8&_sug_=n&_sug_type_=

  简单剖析下 URL 参数。

  参数 type 是定义搜索类型,为 1 时搜索的是公众号,为 2 就是公众号文章。

  参数 query 是定义搜索关键词微信文章采集 php,注意是经过 URL 编码的。

  另外还有一个 page 参数,由于搜索进来没有翻页 所以这个参数没显示下来。需要晓得这个参数是拿来翻页即可。

  知道 URL 的规则后,就可以进行拼接 URL 进行文章列表采集了,具体代码实现 可参考之前的博文:

  其实无非就是循环列表的 div 标签收集到文章的标题、描述、公众号名称。然后执行完了下一页的时侯可在原 page 参数值上加一。

  到目前为止还没哪些技术难点,因为列表的采集没很强的反爬虫,当然 如果执行频度很高才会触发反爬虫机制。所以这个频度要控制好。

  触发反爬虫以后:

  

  之前的博文中是采集文章内容,但是并没有遇见反爬虫机制,此处的列表页是有反爬虫机制的。爬取列表页须要加上 UA 伪造。可参考下边代码:

  $ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36';

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, '列表页地址');

curl_setopt($curl, CURLOPT_USERAGENT, $ua);

//curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_exec($curl);

curl_close($curl);

  爬取到该列表的 HTML 代码然后,请求中会有一段 COOKIE,需要将这段 COOKIE 保存出来。然后采集到的 a 标签的 href 值,是须要携带 COOKIE 进行恳求的,爬取频度很高都会封禁 IP 及 COOKIE。

  

  所以本文的做法是不采集 href 属性,而是 data-share 属性,采集之后就挺好操作了,和先前的博文几乎一致的操作。

  

  频率很高太可能还会被封禁 IP,所以还尝试了使用 IP 代理

  使用 IP 代理的方式也很简单,由于这是免费的 IP 代理服务 所以可能随时就会难以联接。解决方式是 先爬取这个站点的 IP 代理,爬取出来执行一次 CURL 看看能不能连上,如果连上就保存上去。

  一个简单的 CURL 加代理 DEMO:

  $ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36';

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, '文章内容页');

curl_setopt($curl, CURLOPT_USERAGENT, $ua);

//curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl, CURLOPT_COOKIE, '这里可放cookie');

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl,CURLOPT_PROXY,'代理 IP');

curl_setopt($curl,CURLOPT_PROXYPORT,'端口');

curl_setopt ($curl, CURLOPT_TIMEOUT, 100);

curl_exec($curl);

curl_getinfo($curl); //可获取请求信息

curl_close($curl);

  爬取到了 HTML 后,可使用 PHP Simple HTML DOM Parser 或者 QueryList 进行解析 HTML。

  解析 HTML 获取到须要的内容就可以保存到数据库了。

  经过处理后的疗效(已经可展示在自己的 H5 网页):

  

  此时早已可以完成借助搜狗爬取微信公众号文章。还有一些网站不写原创文章微信文章采集 php,使用爬虫四处爬文章发布也是同样的原理。

  最后还是说一句,本文仅供学习与研究。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线