最近忙完了项目比较空就打算深入学习一些关于爬虫的知识,以前读书的时候就喜欢用爬虫去爬一些学习网站(波多野**老师)。写这篇博客是想对之前学习的一些爬虫知识做一个梳理和交流。希望有大佬指出不足,帮我成长。

新手村任务

下面这些是我2018年这半年业余时间研究的一些小东西,比较适合刚开始接触爬虫的人

文章爬虫(搜狗微信文章、某书、还有今日头条等)

音乐类的数据爬虫(主要基于NodeJS,网易云音乐的社区API)

微信文章点赞爬虫

平时爬东西常用的 工具 推荐

Charles (抓包工具)

Anyproxy 也是一个抓包工具但是可以编程比较好玩

adb 安卓调试桥 可以用 python 脚本控制安卓手机自动执行脚本

simulator 网页抓包必备、还可以写自动化测试脚本

回归正题爬掘金文章

首先我打算使用最原始的方式去获取掘金的文章内容。我使用了PHP的curl和phpQuery来做这件事情。我发现文章内容获取到的是空。而且像图片这些资源是用 这样的标签包起来的没有得到正常解析。

很显然掘金的文章是异步加载的。而且通过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, '

$num2 = strpos($str, '

');

$re_data = substr($str, $num1, $num2 - $num1);

$re_data .= '';

$re_data = str_replace("data-src","src",$re_data);

// file_put_contents('3.html', $re_data);

return $re_data;

复制代码

掘金是不是对php有意见,富贵教你用PHP爬取掘金文章 | 码农网相关推荐

  1. 教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)

    教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中.(附源码) 代码展示: 保存在各自的文件夹中 美么? 让我们开始爬虫之路 开发环境 windows 10 python3. ...

  2. Python POST 爬虫爬取掘金用户信息

    Python POST 爬虫爬取掘金用户信息 1. 概述 Python第三方库requests提供了两种访问http网页的函数,基于GET方式的get()函数和基于POST方式的post()函数. g ...

  3. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(一)

    文章目录 前言 一.准备我们的库 二.分析分析 三. 代码 四.数据展示 小唐的心路历程 上一篇:没有啦! 下一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(二) 前言 有 ...

  4. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(二)

    文章目录 前言 一.准备我们的库 二.数据清洗 三.核密度图及词云制作 四.完整代码 五.扩展 上一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(一) 下一篇:没有拉! 前 ...

  5. 教你用Python爬取表情包网站下的全部表情图片

    教你用Python爬取表情包网站下的全部表情图片 又是我啦~~~ 最近上网的时候老看到有人用Python爬取表情包,心痒痒自己也整了一个. 使用到的扩展库:BeautifulSoup, request ...

  6. 以某乎为实战案例,教你用Python爬取手机App数据

    1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...

  7. 手把手教你使用Python爬取西刺代理数据,不用担心我封IP了!

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  8. 教你用Python爬取妹子图APP

    教你用Python爬美之图APP全站图片 爬取结果 程序只运行了2h,最后认为程序没有问题了就关了(我可不是去杀生去了...... 运行环境 Python 3.5+ Windows 10 VSCode ...

  9. 使用Scrapy爬取掘金热门文章的分析和实现

    一.分析掘金网页 1. 获取浏览器URL 直接页面选择30内最热门的文章可得到URL地址为 https://juejin.im/timeline?sort=monthly_hottest 查看该网页D ...

最新文章

  1. Sql Server之旅——第十四站 深入的探讨锁机制
  2. 金融科技公司采用大数据领先银行的三种方式
  3. [zhuan]二叉树遍历算法实现(C#2.0)
  4. 【NLP】面向对话的机器阅读理解任务(Dialogue MRC)相关论文整理
  5. IntelliJ IDEA打开Maven项目,Spring boot所有依赖红名,不可用
  6. extjs window js引入问题
  7. NUMTRYE - Number Theory (Easy)
  8. 【ABAP系列】SAP 面试 ABAPer的一些感想
  9. vscode调试angular2
  10. java集合的某项相加_java8实现list集合中按照某一个值相加求和,平均值等操作代码...
  11. 疏通马桶的工具有哪些 疏通马桶的技巧
  12. iis由5.1变成5.0——怎么回事呢
  13. Java核心技术11 | Java IO
  14. jquery ajax教程例子,jquery ajax教程例子
  15. vue使用vue-video-player插件播放视频
  16. c语言程序32位,turbo c语言下载
  17. 唐福林《新浪微博开放平台中的Redis实践》演讲视频
  18. mysql.sock 路径_关于mysql.sock路径的问题
  19. Python学习日记04
  20. 清北学堂2019.8.9

热门文章

  1. 2019.8.10 NOIP模拟测试16 反思总结【基本更新完毕忽视咕咕咕】
  2. 全套支付宝系统架构(含内部架构图),非常好的收藏学习!
  3. 如何利用SEO赚钱(一个月入万元的简单网站)
  4. 家具抽屉滑轨行业调研报告 - 市场现状分析与发展前景预测
  5. SMO优化算法(转)
  6. 小程序基础组价(二)
  7. Android开发:Bundle传值
  8. 令人吃惊的模拟电路 - 运放 - 匹配电阻的作用
  9. 建设工程监管信息系统的系统流程管理子模块
  10. 控制安卓手机物理返回键