浅谈爬虫 《一》 ===python
浅谈爬虫 《一》 ===python
‘’正文之前先啰嗦一下,准确来说,在下还只是一个刚入门IT世界的菜鸟,工作近两年了,之前做前端的时候就想写博客来着,现在都转做python了,如果还不开始写点什么,估计时间都不会原谅这么懒散的我了……
闲话到此,下面说正事儿——首先来个爬虫简介
咋一听挺神秘的样子,简单来讲爬虫就是从网络获取资源,比如你想知道淘宝上的女装什么颜色的销量好,或者哪一款零食比较有赚头儿…… 在说现在流行的人工智能,其实所谓的人工智能也就是足够的数据支撑,以及数据标记等等,使机器可以对足够多的场景作出反应……以上纯属个人观点,如有不对请指正
这次是真的讲正题了,爬虫分类,爬虫原理,以及python代码简单实现
比较同用的说法:爬虫分两类
总的来说都是网络爬虫!
我们这里主要谈论的是聚焦爬虫:
爬虫简单来讲分三步:
- 发起请求
- 得到反馈
- 处理数据
由于python2已经快要停止更新了(大概2020年停止), 所以我们这里直接谈论python3的方法
# 导入需要的工具包
from urllib.request import Request,urlopen
# 发起请求(以请求百度为例)
request = Request('http://www.baidu.com')
# 得到反馈
response = urlopen(request)
# 获取数据流
data = response.read()
# 数据打印并且转码为 UTF-8
print(data.decode("utf-8"))
打印结果(简略)
<!DOCTYPE html>
<!--STATUS OK-->
<html>
<head>
…………
<title>百度一下,你就知道</title>
…………
俗话说越是简单的越南学习,在爬虫这里就体现出来了, 上面的代码看起来简单,理解起来也没难度,但是不实用,只要网站稍做防范(反爬虫),就只能傻傻发呆了……,如果您打算从事爬虫工作那么发爬虫将是您工作生涯的中心!
下面介绍一个简单的反爬虫的例子:
from urllib.request import Request,urlopen
# 请求头信息,伪装成浏览器访问
ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
request = Request("http://note.youdao.com/iyoudao/?p=2411",headers=ua_header)
#urlopen()函数,url是必须要传入的,data如果传入就是POST请求,如果不传就是GETT请求
response = urlopen(request)
#到服务器返回的数据,读取里面的全部内容
response_data = response.read()
#打印返回的数据
print(response_data.decode("utf-8"))
只在请求头(ua_header)里面添加(User-Agent)只是最简单的伪装反爬,更多的反爬虫的方式包括但不限于cookie,session,代理等等。反爬方式有待探究,下次讨论简单代理以及爬虫的其他库
浅谈爬虫 《一》 ===python的更多相关文章
- 浅谈如何使用python抓取网页中的动态数据
我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到 ...
- 浅谈开发中python通过os模块存储数据
#其实本人很烦发博客,但为了面试还是发一下好,证明一下自己的能力 前言 首先说一下适用环境,在开发中我们有一些经常用到的数据(数据量大)需要存储起来. 存sql嘛又不合适,要知道在开发中每条sql语句 ...
- 浅谈装饰器(Python)
先来了解函数和执行函数在python的区别 我再重新定义一个函数,在函数前面加上@set_func 执行结果如下: 函数前面没有加@set_fun 执行结果如下: 是不是可以不修改原来的函 ...
- 浅谈javascript和python语言的深拷贝
深拷贝: 之前在开发中我遇到一个很大的bug,经过我多次调试之后我发现原本应该有保存数据的地方数据全部被清空,仔细一看发现原来是被人为删除,明明操作的是一个副本,为什么原本也会跟着一起被删除呢?经过了 ...
- 浅谈mongodb与Python的交互
1. mongdb和python交互的模块 pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo 2. 使用pymongo 导入pymon ...
- 浅谈设计模式及python实现
设计模式及Python实现 设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样你就能一次又一次地使用 ...
- python浅谈正则的常用方法
python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...
- 浅谈五大Python Web框架
转载:http://feilong.me/2011/01/talk-about-Python-web-framework 说到Web Framework,Ruby的世界Rails一统江湖,而Pytho ...
- 浅谈Python时间模块
浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...
随机推荐
- 2020Pycharm安装教程!最新2020pycharm安装!如何安装Pycharm2020版本!如何安装Pycharm!如何安装2020Pycharm!2020Pycharm永久激活!
本教程仅用作个人学习,请勿用于商业获利,造成后果自负!!! Pycharm安装 在这插一个小话题哈,Pycharm只是一个编译器,并不能代替Python,如果要使用Python,还是需要安装Pytho ...
- 将SpringBoot部署在外部tomcat中
一,前言 在文章SpringBoot之简单入门中提到了,SpringBoot是内置一个tomcat容器的,但是如果要将SpringBoot部署在一个外部的tomcat,要怎么办呢?这就是本篇文章的目的 ...
- linux双网卡绑定为逻辑网卡
网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术. 生产环境服务器为:DELL 网卡为:光纤 bond需要修改涉及的网卡配置文件 /e ...
- 蓝桥杯 algo122 未名湖的烦恼 简单题
#include <iostream> using namespace std; int m, n, ans; void solve(int m, int n, int cnt) { &a ...
- 手把手教你用最简便的方法免费安装SSL
原文链接:小枫同学的个人博客 随时IT的发展,它几乎涵盖了世界发展中的任何一方面,几乎都和计算机挂钩,也有好多小伙伴想开一个自己的网站,分享一些知识,分享一些心情等等.但是随着IT的发展,网络安全也越 ...
- ubuntu linux重置密码
(和网上的有点不一样,记录一下) 1)重启系统,同时长时间按住shift键进入grub菜单:GNU GRUB version 1.99-12ubuntu5(如图一) 2)选择Ubuntu, with ...
- Spring boot 梳理 - SpringApplication
简单启动方式 public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, a ...
- springboot新版本(2.0.0+)自定义ErrorController中使用ErrorAttributes
2.0.0之前使用: @Autowired private ErrorAttributes errorAttributes; private Map<String, Object> get ...
- 如何编写高质量的 JS 函数(3) --函数式编程[理论篇]
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何 ...
- JavaScript系列:函数式编程(开篇)
前言: 上一篇介绍了 函数回调,高阶函数以及函数柯里化等高级函数应用,同时,因为正在学习JavaScript·函数式编程,想整理一下函数式编程中,对于我们日常比较有用的部分. 为什么函数式编程很重要? ...