有些同学一想到爬虫,就觉得很厉害,然后也认为是一个很难学,确实,会爬虫的确是个狠人,爬虫这个东西可以抓取很多东西,但是也并不是那么的难学,入门其实也很简单,爬虫都是一些套路步骤,那么接下来让我们用13行代码制作一个简单的英语翻译器来走进爬虫世界。
本文章只进行了终端代码的教程和图形化tkinter演绎视频,若想要图形化翻译器代码请评论区回复,那么废话不多说,底层基础咱也不多说了,直接上干粮。
1.爬虫第一步先import requests,requests是对网址发出请求,如果没有requests的要先在终端pip install requests,如果终端提示没有pip的话那就先去文件夹找到pip.exe的绝对路径,复制绝对路径到环境变量的path中,配置环境变量我就不详细多说了。
import requests #import requests
2.第二步:很关键的一步,打开浏览器搜索百度翻译(也可以是其他翻译器),进入后按键盘上的F12,然后根据下面的截图步骤获取得到请求URL:https://fanyi.baidu.com/sug
获取表单数据内容的kw:dog
获取URL后编写的代码如下:
url='https://fanyi.baidu.com/sug' #定义变量url等于获取的网址
获取的表单数据内容放入集合里的代码如下:
dat={
'kw': 'dog' #这里就是集合的定义了,kw是键,dog是值,dat为集合的变量名
}
因为dog是我们在网页上输入要翻译的单词,这里我们可以是其他单词,即我们可以通过键盘输入单词来翻译,改进代码如下:
word=input('输入内容:')
dat={
'kw': word #这里将dog替换成word即可
}
3.第三步:则是用requests发起请求了,这里说一下关于请求的相关内容,requests有两种请求,一种是get请求,即requests.get(),第二种是post请求,即requests.post(),这两种请求用哪一个可以看上面图片的'请求URL'下面显示有请求方法,所以这次请求方法用requests.post()。
req=requests.post(url,data=dat) #发出请求,这里的url和dat就是上面两个代码的url和dat
接下来是获取得到请求后的数据,post的请求方法我们一般是用json获取数据,即上面代码变量名req.json()或用text获取数据,即req.text,然后还要转化成字符串形式再通过正则表达式获取到具体数据,获取数据的代码如下:
不用正则表达式的完整代码及运行结果如下:
import requests
url='https://fanyi.baidu.com/sug'
word=input('输入内容:')
dat={
'kw': word
}
req=requests.post(url,data=dat)
result1=str(req.json()) #通过json()获取得到数据后转化成字符串
print('翻译为:',result1) #输出结果
巧用正则表达式后的完整代码及运行结果如下:
import requests
import re #要用正则表达式需引入re库
url='https://fanyi.baidu.com/sug'
word=input('输入内容:')
dat={
'kw': word
}
req=requests.post(url,data=dat)
result1=str(req.json())
reg=re.compile("'v': '(?P<word>.*?)'}") #这行和下面两行代码下个步骤再做解释
result2=reg.search(result1)
print('翻译为:',result2.group(word))
4.针对上面的几行代码做解答:
(1)reg=re.compile("'v': '(?P<word>.*?)'}")的讲解
1.'v': '表示下图没有用正则表达式输出的结果中“dog”后面的'v': '
2. '}表示下图没有用正则表达式输出的结果中“跟踪”后面的'}
3. (?P<word>.*?)这个整体的.*?则表示下图输出结果中处于'v': '和'}中间部分的内容,即是上 图的运行结果的内容,而?P<word>表示将.*?内容赋给word,便于后面将内容输出在控制 台上
(2)result2=reg.search(result1)的解释, 这里我只要得到下图结果中第一个大括号{}中的内容,所以用的是search方式得到正则表达式解析后的内容,如果想得到下面所有{}中的内容可以用finditer迭代器方式得到,当然也不止是这两种方法得到内容,大家可以自己去查阅资料了解更多。
(3)print('翻译为:',result2.group(word))解释,通过group得到word变量的内容并输出
5.tkinter图形化翻译器视频演示如下:
图形化也仅用了40行代码写出来
5.总结:
- 打开浏览器进入翻译器页面,输入单词后得到sug的URL网址和表单数据内容
- 用requests中post请求方法和json得到数据
- 通过正则表达式解析后得到最终翻译的内容