爬虫
爬虫就是用程序获取网络上数据这个过程的一种名称
爬虫的原理
1.确定爬取目标:获得URL地址(即网址)
2.发送请求:通过程序模拟浏览器的请求,使用不同的库来发送请求,比如requests和urllib库
3.获取响应:目标网站接收到请求后,会返回一个响应,响应中包含了所需数据,爬虫需要从响应数据中获取所需数据,响应数据可以是HTML页面(它是用来描述网页的一种语言),JSON数据,XML数据等不同格式的数据
4.解析数据:对于HTML页面,可以使用BeautifulSoup库进行解析,对于JSON和XML数据,则需要使用对应的解析工具来处理数据格式,如json库和xml.etree.ElementTree等。
5.存储数据
练习
#模拟百度搜索,输入关键字,获取搜索结果
#1.导入相关库:导⼊urllib.request模块中的urlopen函数,Request类
#urlopen()函数:发送网络请求
#Request类:构造请求头信息,防止请求被封
from urllib.request import urlopen,Request
from urllib.parse import quote #如果有中文,需要转码
from random import choice #.导⼊random模块中的choice函数,⽤于随机选择⼀个浏览器
kw = input("请输入关键字:") #添加动态关键字
#2.添加目标源地址(发送请求)
url = f"https://httpbin.org/get?q={quote(kw)}"
user_agent_list = [
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
"Opera/9.80 (Android 2.3.4; Linux; Opera Mobi/build-1107180945; U; enGB) Presto/2.8.149 Version/11.10",
]
#3.配置请求头信息(爬虫必须要有headers,防止被封)
headers = {
'User-Agent': choice(user_agent_list)
}
#4.构造请求头信息(获取响应)
response = Request(url,headers=headers)
#5.打开⽬标⽹⻚,获取⽹⻚对象,赋值给res变量
res = urlopen(response)
#6.读取网页内容
print(res.read().decode('utf-8'))