内容简介:最近忙完了项目比较空就打算深入学习一些关于爬虫的知识,以前读书的时候就喜欢用爬虫去爬一些学习网站(波多野**老师)。写这篇博客是想对之前学习的一些爬虫知识做一个梳理和交流。希望有大佬指出不足,帮我成长。首先我打算使用最原始的方式去获取掘金的文章内容。我使用了PHP的curl和phpQuery来做这件事情。我发现文章内容获取到的是空。而且像图片这些资源是用我的思路很简单直接抓取渲染过后的数据。一般来讲要达到这个效果可以使用 simulator和phantomjs。使用simulator我本地是OK的好想服务
最近忙完了项目比较空就打算深入学习一些关于爬虫的知识,以前读书的时候就喜欢用爬虫去爬一些学习网站(波多野**老师)。写这篇博客是想对之前学习的一些爬虫知识做一个梳理和交流。希望有大佬指出不足,帮我成长。
新手村任务
下面这些是我2018年这半年业余时间研究的一些小东西,比较适合刚开始接触爬虫的人
- 文章爬虫(搜狗微信文章、某书、还有今日头条等)
- 音乐类的数据爬虫(主要基于NodeJS,网易云音乐的社区API)
- 微信文章点赞爬虫
平时爬东西常用的 工具 推荐
- Charles (抓包工具)
- Anyproxy 也是一个抓包工具但是可以编程比较好玩
- adb 安卓调试桥 可以用 python 脚本控制安卓手机自动执行脚本
- simulator 网页抓包必备、还可以写自动化测试脚本
回归正题爬掘金文章
首先我打算使用最原始的方式去获取掘金的文章内容。我使用了PHP的curl和phpQuery来做这件事情。我发现文章内容获取到的是空。而且像图片这些资源是用 <image> 这样的标签包起来的没有得到正常解析。
很显然掘金的文章是异步加载的。而且通过curl去获取文章会发现文章内容是加密过的。 (我没有太多时间去研究他的加密规则) 复制代码
我的思路很简单直接抓取渲染过后的数据。一般来讲要达到这个效果可以使用 simulator和phantomjs。使用simulator我本地是OK的好想服务器爆错了后来就用了phantomjs。
下面讲解一下这个项目需要的依赖和注意事项
1、注意事项(选择国内的源)
composer 方法一: 修改 composer 的全局配置文件(推荐方式) 打开命令行窗口(windows用户)或控制台(Linux、Mac 用户)并执行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com 复制代码
方法二: 修改当前项目的 composer.json 配置文件: 打开命令行窗口(windows用户)或控制台(Linux、Mac 用户),进入你的项目的根目录(也就是 composer.json 文件所在目录),执行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com 复制代码
2、需要安装的依赖
composer require "jonnyw/php-phantomjs:4.*" 复制代码
3、 Linux 环境的特殊需求(修改依赖文件)
namespace JonnyW\PhantomJs\DependencyInjection;
/**
* Load service container.
*
* @access public
* @return void
*/
public function load($file = null)
{
$loader = new YamlFileLoader($this, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('config.yml');
$loader->load('services.yml');
$this->setParameter('phantomjs.cache_dir', sys_get_temp_dir());
$this->setParameter('phantomjs.resource_dir', __DIR__.'/../Resources');
}
复制代码
修改PHP.ini开启一些系统函数
上代码
$client = Client::getInstance();
$client->getEngine()->setPath(ROOT_PATH . 'public' . DS . 'phantomjs'); //设置phantomjs位置
$client->getEngine()->addOption('--load-images=false');
$client->getEngine()->addOption('--ignore-ssl-errors=true');
$url = 'https://juejin.im/entry/5c01b3016fb9a04a0b21e766';
$request = $client->getMessageFactory()->createRequest($url, 'GET');
$timeout = 10000; //设置超时
$request->setTimeout($timeout);
$response = $client->getMessageFactory()->createResponse();
$client->send($request, $response);
$str = $response->getContent();
$num1 = strpos($str, '<article');
$num2 = strpos($str, '</article>');
$re_data = substr($str, $num1, $num2 - $num1);
$re_data .= '</article>';
$re_data = str_replace("data-src","src",$re_data);
// file_put_contents('3.html', $re_data);
return $re_data;
复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 教大家使用Nodejs+Mysql+React写一个掘金和csdn优质文章的爬虫网站
- 掘金小册写作参考
- 使用xposed更改掘金的侧滑退出的触发范围(左撇子,掘金的这个侧滑退出的体验一言难尽)
- 掘金小册优惠折扣一览
- React Demo Four - 掘金
- 为掘金小册添加目录
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
突破——程序员如何练就领导力
刘朋 / 电子工业出版社 / 2018-8-31 / 55.00元
内容简介: 在今日中国如雨后春笋般出现的各种新兴的互联网和软件公司中,有越来越多的技术达人凭借在技术上的优异表现而被晋升为技术团队的管理者和领导者。然而,从技术到管理——从单枪匹马的个人贡献者到一呼百应的技术团队领导者——注定是“惊险的一跃”。对于刚走上技术团队管理岗位的技术专家,你一定遇到过和本书作者当年一样的各种困惑和不适“症状”: ——我能处理好人“机”关系,但是如何处理好人际关......一起来看看 《突破——程序员如何练就领导力》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
正则表达式在线测试
正则表达式在线测试