专栏首页技术探究-前端、Python、爬虫、数据分析、工具爬虫系列(1)第一步肯定是先介绍介绍爬虫。

爬虫系列(1)第一步肯定是先介绍介绍爬虫。

1. 什么是爬虫?

网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据,比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。

2. 有什么作用?

通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。

3. 业界的情况

目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采集、大数据分析,这是必备手段,并且很多公司都设立了爬虫工程师的岗位。


4. 合法性

爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示的数据信息。因为信息是完全公开的,所以是合法的。其实就像浏览器一样,浏览器解析响应内容并渲染为页面,而爬虫解析响应内容采集想要的数据进行存储。


5. 反爬虫

爬虫很难完全的制止,道高一尺魔高一丈,这是一场没有硝烟的战争,码农VS码农 反爬虫一些手段:

  • 合法检测:请求校验(useragent,referer,接口加签名,等)
  • 小黑屋:IP/用户限制请求频率,或者直接拦截
  • 投毒:反爬虫高境界可以不用拦截,拦截是一时的,投毒返回虚假数据,可以误导竞品决策
  • ... ...

6. 选择一门语言

爬虫可以用各种语言写, C++, Java都可以, 为什么要Python?

首先用C++搞网络开发的例子不多(可能是我见得太少)然后由于Oracle收购了Sun, Java目前虽然在Android开发上很重要, 但是如果Google官司进展不顺利, 那么很有可能用Go语言替代掉Java来做Android开发. 在这计算机速度高速增长的年代里, 选语言都要看他爹的业绩, 真是稍不注意就落后于时代. 随着计算机速度的高速发展, 某种语言开发的软件运行的时间复杂度的常数系数已经不像以前那么重要, 我们可以越来越偏爱为程序员打造的而不是为计算机打造的语言. 比如Ruby这种传说中的纯种而又飘逸的的OOP语言, 或者Python这种稍严谨而流行库又非常多的语言, 都大大弱化了针对计算机运行速度而打造的特性, 强化了为程序员容易思考而打造的特性. 所以我选择Python。


7. 选择Python版本

有2和3两个版本, 3比较新, 听说改动大. 根据我在知乎上搜集的观点来看, 我还是倾向于使用”在趋势中将会越来越火”的版本, 而非”目前已经很稳定而且很成熟”的版本. 这是个人喜好, 而且预测不一定准确. 但是如果Python3无法像Python2那么火, 那么整个Python语言就不可避免的随着时间的推移越来越落后, 因此我想其实选哪个的最坏风险都一样, 但是最好回报却是Python3的大. 其实两者区别也可以说大也可以说不大, 最终都不是什么大问题. 我选择的是Python 3。


8. 爬虫基本套路

  • 基本流程
    • 目标数据
    • 来源地址
    • 结构分析
    • 实现构思
    • 操刀编码
  • 基本手段
    • 简单的验证码可以使用识图读验证码第三方库
    • 请求带上用户cookie信息
    • 请求头设置,如:useragant为有效客户端
    • 控制请求频率(根据实际情景)
    • IP代理
    • 签名/加密参数从html/cookie/js分析
    • 破解请求限制
    • 破解登录授权
    • 破解验证码
  • 解析数据
    • 正则匹配(根据情景使用)
    • 转 JSON/XML 对象进行解析
    • 正则匹配,通过的正则表达式来匹配想要爬取的数据,如:有些数据不是在html 标签里,而是在html的script 标签的js变量中
    • 使用第三方库解析html dom,比较喜欢类jquery的库
    • HTML Dom解析
    • 数据字符串

9. python爬虫

  • python写爬虫的优势
    • python语法易学,容易上手
    • 社区活跃,实现方案多可参考
    • 各种功能包丰富
    • 少量代码即可完成强大功能
  • 涉及模块包
    • selenium
    • xpath
    • beautiful soup
    • json
    • re
    • threading
    • urllib
    • requests
    • 请求
    • 多线程
    • 正则
    • json解析
    • html dom解析
    • lxml
    • 操作浏览器

本文分享自微信公众号 - 离不开的网(Gy_dxj)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 爬虫面试题 | 系统设计 —— 如何设计一个网页爬虫

    来源:https://juejin.im/post/598d1d3e51882548924134c2

    小Gy
  • 20 Python 基础: 重点知识点--网络通信进阶知识讲解

    其他文章均已发表,可通过 “技术专栏 -- Python -- PY基础” 进行阅读。

    小Gy
  • 爬虫系列(9)爬虫的多线程理论以及动态数据的获取方法。

    将将要爬去的url放在一个队列中,这里使用标准库Queue。访问url后的结果保存在结果队列中

    小Gy
  • 听说你好不容易写了个爬虫,结果没抓几个就被封了?

    在这个数据驱动的时代,仿佛只要掌握了大数据,就对时代潮流和风向预测有了更令人信服的发言权。

    一墨编程学习
  • 人工智能|大数据时代的信息获取

    人们最初,信息获取的方式单一,但是获取信息的准确性更加的高。互联网时代,亦是大数据时代。新时代的数据有以下几点基本特征,数据量大、类型繁多、价值密度低、速度快、...

    算法与编程之美
  • 从全景视角看爬虫与反爬虫

    导语:互联网最激烈的对抗战场,除了安全专家与黑客之间,大概就是爬虫与反爬虫领域了。据统计,爬虫流量早已超过了人类真实访问请求流量。互联网充斥着形形色色的爬虫,云...

    周俊辉
  • 如何给爸妈解释什么是“爬虫”?

    前段时间我妈突然问我:儿子,爬虫是什么?我当时既惊讶又尴尬,惊讶的是为什么我妈会对爬虫好奇?尴尬的是我该怎么给她解释呢?

    数据森麟
  • Python爬虫从入门到放弃(二十二)之 爬虫与反爬虫大战

    爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序 反爬虫:使用技术手段防...

    coders
  • Python实现一个带图形界面的爬虫

    Python 是一个很简介高效的语言,许多的 Python 爱好者(包括我在内)都很喜欢用 Python 做爬虫,为什么会喜欢写爬虫,我对爬虫的感觉就是:它能给...

    企鹅号小编
  • Java 网络爬虫,该怎么学?

    在后面的几年工作中,也参与了好几个爬虫项目,但是大多数都是使用 Python ,抛开语言不谈,爬虫也是有一套思想的。这些年写爬虫程序,对我个人的技术成长帮助非常...

    黄泽杰

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动