零基础掌握爬虫的实现原理和使用方法-包会型(一)

前言

  • 本篇结尾Demo是用python做出在线翻译小程序,适合零基础,不适合没有语言基础,这里需要指出的是不是只有python才能实现爬虫,如果现在的你熟悉另一门语言,不妨通过读完本篇文章理解一些基础知识然后试试该语言对应的操作,只是说目前为止,只有python操作爬虫操作比较方便;

基本知识

  • python的常见的基本数据类型
    • 字符串,数字,列表,元组,字典;
      • 数字类型:num = 521 pi = 3.1415926(也就是直接指定数据类型)
      • 列表数据类型(list):可以同时将多个不同数据类型不同数据放在一个变量中, arr = [‘I love you’ ,521,3.1415926]
      • 字典数据类型(dict):可以理解为键值对(key==>value),zhangsan = {‘name’:‘张三’,‘age’ : ‘20’,‘sex’ : ‘男’}
  • 注释符号 “#” 多行注释” ‘’’ 注释内容 ‘’’ “
  • 部分基本函数
    • 输出打印print() # python3版本以上的;
    • type() # 输出查看变量数据类型 ;
  • 对于python的程序,我们要注意该语法没有{}这种作用域的存在,它的作用域可以简单的理解为在不在一列上,即通过缩进观察,我们在换行的时候推荐都用tab,而不是敲空格,从而减少后续代码问题;

python的流程控制和函数

流程

  • 顺序结构:代码从上向下执行的顺序
  • 分支结构:需要不同流向的代码执行顺序
    下面展示一些 内联代码片
基本分支结构:
if 条件判断:
	条件成立
else:
	条件不成立
  • 循环结构:代码不停的,反复的去执行;
    • 这里介绍两种方法
    • 第一种print(‘i love you’ *100),第二种:
arr = range(1,101)
for i in arr:
	print(i) # 打印1-100

函数

  • 函数:就是封装的一个代码块,通过一定参数实现某一类功能,提高代码利用率,一般 需要调用才能执行,不然不执行
  • python中定义方法的格式:
    通过def关键字实现,下面是一个加法举例
def add(n1,n2):
	print(n1+n2)

认识爬虫

  • 爬虫可以理解为是执行数据抓取的一种操作,从互联网上抓取想要的数据
  • web与http:
    • web可以理解为网站,给用户展现数据的地方
    • http是网络协议,https是在http基础上实现加密
  • url 统一资源定位符,浅陋的可以理解为一个链接
  • 域名:类似于www.bui.com

爬虫的流程步骤

  1. 明确需求
  2. 根据需求,寻找对应的Web网址(url)
  3. 写python程序模拟浏览器去访问对应的网址(我们需要了解的是,在我们使用浏览器访问百度或者其他网址的时候,我们是先把请求发送到对应的人家的服务器中,然后人家的服务器给我们返回html文档,至于什么是html文档,你可以理解为你在浏览器看到页面的底层实现代码,或者说专门用来写Web页面的一门文本标记语言)
  4. 获取服务器返回的源代码(html,json,xml)
  5. 根据返回的源代码提取需要的数据(方法有正则,xpath,bs4,pyquery,,,,)
  6. 把数据存储整理

开发翻译小程序

基本概念

  • 目标工具:XX翻译;
  • 开发者工具介绍:在浏览器页面中按键盘F12键快速启动或者右键页面空白处点击检查;我们找到network(网络请求)
    • 在这里插入图片描述
  • XHR:Web里面的一个无刷新加载技术,这种技术称为ajax,产生的对象是XmlHttpRequest(XHR)
  • 请求方式:常见的是get/post
  • 在这里插入图片描述
  • 除了要了解上图的几个知识点,我们还要知道Form data;在这里插入图片描述
  • response是返回的响应内容(json数据),有点像python中的字典的数据类型,但是不是,它的好处是拿到可以直接用,这个响应内容指的是服务器的响应内容哈json,json;在这里插入图片描述
  • reposne Header:里面的数据是服务器响应后附带的数据
  • requeset Header(用来标识用户身份):里面的数据是你发送请求时附带的数据在这里插入图片描述
  • 如果没有User Agent这条数据,服务器会知道你可能是爬虫,不会返回数据给你在这里插入图片描述

安装requests库

  • windows : 打开cmd窗口(快捷键:win+R键,输入cmd回车),在这个黑黑的窗口中(dos环境)输入pip install requests
  • Mac/Linux系统:打开终端输入pip3 install requests
  • 等一会之后就可以安装完成了在这里插入图片描述

执行代码

# 引入第三方库requests,实现请求
import requests
#请求的url
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'

#请求的浏览器header 请求头:把python的爬虫请求伪装成浏览器的过程,做法还是把对应数据转换成python中的字典数据类型
headers = {
'Referer': 'http://fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}

# 请求时携带的数据
data = {
'i':'hello', #翻译的关键字
'from':' AUTO',
'to':' AUTO',
'smartresult':' dict',
'client':' fanyideskweb',
'salt':' 15942614224529',
'sign':' 312f01fe7cedcbff7b2d44ca201255e7',
'ts':' 1594261422452',
'bv':' ca3dedaa9d15daa003dbdaaa991540d1',
'doctype':'json',# 返回的数据格式
'version':' 2.1',
'keyfrom':' fanyi.web',
'action':' FY_BY_REALTlME'
}

# 发起请求 requests.post(),post和get是两种请求方法,人家用啥你用啥就行
response = requests.post(url=url,headers=headers,data=data)

# 判断是否成功
if response.status_code == 200:
	print('请求成功')
	#如果请求成功我们将会获得服务器响应的内容
	print(response.json)#打印如果成功后的文本内容
	#这里直接和大家叙述一下结果,如果你粘贴了上述的代码,你会发现报错
	#报错原因:data中的一个参数问题(人家不会轻易给你权限)
else:
	print('请求失败')
  • 解决上面的问题,就是把data中的参数全部删除,只保留’i’和’doctype’,同时把url中的_o去掉(去掉之后这个链接就是有道过去没有加密的版本链接了,这里采用的是取巧,至于怎么实在的解密,后续再说)在这里插入图片描述
  • 然后将图中内容置换成res_data = response.json() print(res_data[‘translateResult’][0][0][‘tgt’])
  • 然后通过更改”i“值基本就可以运行了,不过这样比较麻饭,怎么简便呢,能让他输入一个,翻译一个,我们可以采取循环的方式:
    即我们封装该方法
def fanyi(kw):
	# 引入第三方库requests,实现请求
	import requests
	#请求的url
	url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
	
	#请求的浏览器header 请求头:把python的爬虫请求伪装成浏览器的过程,做法还是把对应数据转换成python中的字典数据类型
	headers = {
	'Referer': 'http://fanyi.youdao.com/',
	'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
	}
	
	# 请求时携带的数据
	data = {
	'i':f'{kw}', #翻译的关键字
	'doctype':'json'# 返回的数据格式
	}
	
	# 发起请求 requests.post(),post和get是两种请求方法,人家用啥你用啥就行
	response = requests.post(url=url,headers=headers,data=data)
	
	# 判断是否成功
	if response.status_code == 200:
		print('请求成功')
		#如果请求成功我们将会获得服务器响应的内容
		res_data = response.json()
		print(res_data['translateResult'][0][0]['tgt'])
	else:
		print('请求失败')
while True:
	kw =input('请输入你想翻译的内容')
	fanyi(kw)
  • 当当当,这就实现了在线翻译的效果啦!

总结:

  • 本篇文章其实主要还是作为练手,或者照顾没有python基础的小朋友,一点一点来,后面还会再分享怎么去爬网站的数据以及和存储数据,再以及怎么可视化数据生成词云等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值