爬取要求:实现浏览器的基本功能,输入关键字就可以返回指定词条对应的搜索结果,也就是说制作一个简易的网页采集器。
一、爬取步骤
1.指定URL:这部分主要包括两步,(1)UA伪装、UA伪装是让爬虫对应的请求载体身份标识伪装成某一款浏览器(2)请求参数处理
2.发起请求
3.获取响应数据(第2、3步可以合并)
4.数据储存
二、前期准备
1.环境安装
基于网络请求模块主要分为两类,Urlib模块与requests模块,目前所主流的是requests模块,模拟浏览器发送请求,在终端输入下方代码:
pip install requests
2.指定URL
URL简单来说就是目标网址。必须要求完整,文本传输协议也需要包含。即http、https
https://www.sogou.com/
3.UA伪装
当指定URL之后,必须进行UA伪装。
User-Agent:门户网站的服务器会检测对应请求的载体身份标识。爬虫就是模拟浏览器的搜索功能,只不过是以代码程序的形式实现。
但是一般浏览器都会设置反爬机制,此时可以通过UA伪装成正常的用户发送请求。如果检测到请求的载体身份标识为某一款浏览器就是正常请求,但是在没有UA伪装的前提之下,检测到请求的载体身份标识不是基于某一款浏览器,则是不正常请求,服务器便会拒绝该请求。
UA伪装的方法:将User-Agent封装到字典当中去
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.3'}
如何进行UA伪装?
浏览器任意页面——右键——检查——network——ctrl+R创新一下,就会出现对应任务
4.发送请求
通过查询可知,需要用get()方法获取。以下代码是判断请求是否成功。
response = requests.get(url=url, params=param, headers=headers)
print(response)
出现2开头的说明请求成功,4开头说明请求失败
<Response [200]>
进程已结束,退出代码0
5.获取响应数据
content-Type是text形式,使用response的一个属性获取响应数据,并储存在page_text里面。
page_text =response.text
6.数据储存
三.完整代码
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; 0'}
url = "https://www.sogou.com/web"
kw = input("请输入:")
param = {"query":kw}
response = requests.get(url=url, params=param, headers=headers)
page_text =response.text
fileName = kw +'.html'
with open(fileName,'w',encoding="utf-8") as fp:
fp.write(page_text)
print(fileName, "保存成功")
运行成功后,就会在任务栏中出现一个html文件,打开文件在浏览器中运行
备注:学习来源