爬虫,运行的本质就是模拟人访问网页,只不过不需要通过网页界面进行操作。
因此,要写出爬虫程序,我们就需要了解网页的结构。
以chrome为例,我们打开并分析一个网页的结构,这个网页是爱词霸的翻译界面,网页地址:http://fy.iciba.com/
例如,现在要用爬虫来替代我们“访问网页——输入需翻译的词——点击翻译按钮——得出结果”的操作过程,那我们需要先登录目标界面,分析网页结构。
登录后,爱词霸的翻译界面如下:
我们按下键盘上的F12,即可打开chrome的开发者工具,通过这个工具,我们就可以对目标网页及其按钮进行分析。
分析网页过程中,我们最常用的就是两个页签Elements和Network。
Elements展示的是网页上所有元素的HTML代码,例如我们把鼠标移至【翻译】按钮,则在Elements对应的代码中就会标示出按钮对应的代码,如图中蓝色行的代码。
Network展示的是我们与服务器之间的交互内容,包括我们访问的URL、我们传递给服务器的数据(如账号、密码)、服务器返回的内容等。
但一般我们进入网站直接打开开发者工具时,如果没有做任何网页操作,那么Network的内容是一片空白的,这是因为我们还没有开始跟网页进行交互。
现在我们可以输入需翻译的内容,并点击【翻译】按钮。就可以看到Network中开始出现内容,点击出现的内容就会看到以下内容。
我们主要关注Headers页签里的内容,里面就包括我们传递给服务器的内容以及服务器返回内容的简要信息。
重点介绍里面的几个部分。
Request URL:这是我们点击翻译后,真正访问的网址,所以这是我们写爬虫真正要访问的URLUser-Agent:这是我们访问这个网站所用的身份标识,我们在写爬虫时最好在requests的headers参数里带上这个标识Accept:这是服务器返回内容的简要信息Form Data:这是我们传递给服务器的内容,可以发现,这就是我们填写的需翻译内容,以及翻译的源语种和目标语种。
学会分析以上内容之后,就能对一些简单网页进行一些简单分析,并根据分析结果写出爬虫程序。
以下附上我的爬虫代码
#爬取爱词霸翻译网站,调用爬虫即可实现翻译功能
import requests
#导入json用于将网页返回数据转为人能看懂的json格式
import json
#声明爬虫访问网站时所使用的浏览器身份
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
#声明需要爬取的url
url='http://fy.iciba.com/ajax.php?a=fy'
#声明需要发送给服务器的信息,word指需要翻译的词
word=input('请输入需要翻译的词:')
data={
'f':'zh',
't':'en',
'w':word
}
#调用requests.get方法访问目标网址
response=requests.post(url=url,headers=headers,data=data)
response_json=json.loads(response.content)['content']['word_mean']
print('翻译结果如下:')
for i in response_json:
print(i)
print('---------------翻译结束-------------------')
小米手機底噪問題如何在小米9身上依然出現?
【美图化妆秀】什么美图软件可以化妆 可以化妆的美图软件