浅谈爬虫 《一》 ===python

 ‘’正文之前先啰嗦一下,准确来说,在下还只是一个刚入门IT世界的菜鸟,工作近两年了,之前做前端的时候就想写博客来着,现在都转做python了,如果还不开始写点什么,估计时间都不会原谅这么懒散的我了……

闲话到此,下面说正事儿——首先来个爬虫简介

  咋一听挺神秘的样子,简单来讲爬虫就是从网络获取资源,比如你想知道淘宝上的女装什么颜色的销量好,或者哪一款零食比较有赚头儿……   在说现在流行的人工智能,其实所谓的人工智能也就是足够的数据支撑,以及数据标记等等,使机器可以对足够多的场景作出反应……以上纯属个人观点,如有不对请指正

这次是真的讲正题了,爬虫分类,爬虫原理,以及python代码简单实现

比较同用的说法:爬虫分两类

总的来说都是网络爬虫

    我们这里主要谈论的是聚焦爬虫:

爬虫简单来讲分三步:

  1. 发起请求
  2. 得到反馈
  3. 处理数据

由于python2已经快要停止更新了(大概2020年停止), 所以我们这里直接谈论python3的方法

  1. # 导入需要的工具包
  2. from urllib.request import Request,urlopen
  3. # 发起请求(以请求百度为例)
  4. request = Request('http://www.baidu.com')
  5. # 得到反馈
  6. response = urlopen(request)
  7. # 获取数据流
  8. data = response.read()
  9. # 数据打印并且转码为 UTF-8
  10. print(data.decode("utf-8"))
打印结果(简略)
  1. <!DOCTYPE html>
  2. <!--STATUS OK-->
  3. <html>
  4. <head>
  5. …………
  6. <title>百度一下,你就知道</title>
  7. …………

俗话说越是简单的越南学习,在爬虫这里就体现出来了, 上面的代码看起来简单,理解起来也没难度,但是不实用,只要网站稍做防范(反爬虫),就只能傻傻发呆了……,如果您打算从事爬虫工作那么发爬虫将是您工作生涯的中心!

下面介绍一个简单的反爬虫的例子:

  1. from urllib.request import Request,urlopen
  2. # 请求头信息,伪装成浏览器访问
  3. ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
  4. request = Request("http://note.youdao.com/iyoudao/?p=2411",headers=ua_header)
  5. #urlopen()函数,url是必须要传入的,data如果传入就是POST请求,如果不传就是GETT请求
  6. response = urlopen(request)
  7. #到服务器返回的数据,读取里面的全部内容
  8. response_data = response.read()
  9. #打印返回的数据
  10. print(response_data.decode("utf-8"))

只在请求头(ua_header)里面添加(User-Agent)只是最简单的伪装反爬,更多的反爬虫的方式包括但不限于cookie,session,代理等等。反爬方式有待探究,下次讨论简单代理以及爬虫的其他库


浅谈爬虫 《一》 ===python的更多相关文章

  1. 浅谈如何使用python抓取网页中的动态数据

    我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到 ...

  2. 浅谈开发中python通过os模块存储数据

    #其实本人很烦发博客,但为了面试还是发一下好,证明一下自己的能力 前言 首先说一下适用环境,在开发中我们有一些经常用到的数据(数据量大)需要存储起来. 存sql嘛又不合适,要知道在开发中每条sql语句 ...

  3. 浅谈装饰器(Python)

    先来了解函数和执行函数在python的区别   我再重新定义一个函数,在函数前面加上@set_func 执行结果如下:   函数前面没有加@set_fun 执行结果如下:   是不是可以不修改原来的函 ...

  4. 浅谈javascript和python语言的深拷贝

    深拷贝: 之前在开发中我遇到一个很大的bug,经过我多次调试之后我发现原本应该有保存数据的地方数据全部被清空,仔细一看发现原来是被人为删除,明明操作的是一个副本,为什么原本也会跟着一起被删除呢?经过了 ...

  5. 浅谈mongodb与Python的交互

    1. mongdb和python交互的模块 pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo 2. 使用pymongo 导入pymon ...

  6. 浅谈设计模式及python实现

    设计模式及Python实现   设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次地使用 ...

  7. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  8. 浅谈五大Python Web框架

    转载:http://feilong.me/2011/01/talk-about-Python-web-framework 说到Web Framework,Ruby的世界Rails一统江湖,而Pytho ...

  9. 浅谈Python时间模块

    浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...

随机推荐

  1. 《即时消息技术剖析与实战》学习笔记7——IM系统的消息未读

    一.什么是消息未读 消息未读包括会话未读和总未读.前者指的是当前用户和某一聊天方的未读消息数,后者指的是当前用户的所有未读消息数,也就是所有会话未读的和.比如用户A收到用户B的2条消息,还收到用户C的 ...

  2. 松软科技课堂:SQL--FULLJOIN关键字

    SQL FULL JOIN 关键字(from:www.sysoft.net.cn) 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行. FULL JOIN 关键字语法 SELECT col ...

  3. Day 21 进程管理

    1.什么是进程 比如: 开发写的代码我们称为程序,那么将开发的代码运行起来.我们称为进程. 总结一句话就是: 当我们运行一个程序,那么我们将运行的程序叫进程. PS1: 当程序运行为进程后,系统会为该 ...

  4. 公众号第三方授权 以及微信H5支付(前端)

    由于公司业务需要,想用户通过我们公众号平台支付的金额直接进去用户自己的账户,所以涉及到公众号第三方授权: 由于涉及第三方,故需要在微信开放平台创建第三方平台: 创建第三方平台:(申请页面链接:http ...

  5. 2018年蓝桥杯java b组第六题

    标题:递增三元组 给定三个整数数组A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],请你统计有多少个三元组(i, j, ...

  6. jquery的api以及用法总结-属性/css/位置

    属性/css 属性 .attr() attr()设置普通属性,prop()设置特有属性 获取或者设置匹配的元素集合中的第一个元素的属性的值 如果需要获取或者设置每个单独元素的属性值,需要依靠.each ...

  7. 接口是什么?接口长什么样?java的Interface

    今天来看看java接口长哪样.接口是特殊抽象类. 一个子类只能继承一个抽象类(父类),所以就有接口这个特殊抽象类. 下面以一个电脑的USB为例: 定义接口标准 public interface USB ...

  8. Python实战练习_贪吃蛇 (pygame的初次使用)

    正如标题所写的那样,我将一步步的完成本次实战练习——贪吃蛇.废话不多说,感兴趣的伙伴可以一同挑战一下. 首先说明本次实战中我的配备: 开发环境:python 3.7: 开发工具:pycharm2019 ...

  9. CentOS7 搭建php环境

    1,先安装apache: yum install httpd 配置ServerName,进入httpd.conf文件: vi /etc/httpd/conf/httpd.conf 将#ServerNa ...

  10. 如何解决myeclipse2014突然无法打开的问题

    今天突然发现我的myeclipse2014打开不了,昨晚还好好的,上网找了一下没有找到解决方法,于是新建一个工作区间Workspace Test,再打开File->Switch WorkSpac ...