python :通过爬虫爬取数据(1)
程序员文章站
2022-05-02 17:37:52
...
(1)通过url爬取网页数据
import urllib.request
#指定url
url ="https://www.baidu.com"
#向服务器发起请求,返回响应的数据,通过infor接收
infor = urllib.request.urlopen(url)
#获取接收的数据,把其保存为Html文件
data = infor.read().decode("utf-8)
'''
读取infor接收的数据的三种方法
1.data = infor.readline() 逐行读取
2.data = inor.readlines() 读取所有文本,赋值给列表变量
3.data = infor.read().decode("utf-8) 读取所有文本,赋值给字符串变量
'''
path =r"D:\pythonItem\爬虫与Json\file.html"
with open(path,"wb") as f :
f.write(infor)
#直接把数据读取到文件中的方法,容易带来缓存
import urllib.request
url ="https://www.baidu.com"
path =r"D:\pythonItem\爬虫与Json\file.html"
urllib.request.urlretrieve(url,path)
urllib.request.urlcleanup() #清除缓存
#返回的数据属性
infor.info() 返回当前环境的所有信息
infor.getcode() 返回状态码
if infor.getcode() == 200 or infor.getcode() == 304 :
print("请求成功")
urllib.request.unquote(url) 编码url
url.request.quote(url) 解码url
#反爬虫:模拟浏览器
import urllib.request
url ="https://www.baidu.com"
#伪装浏览器
#设置请求头
'''
User-Agent:用户浏览器的基础信息
Content-Type:定义网络文件的类型和网页的编码
X-Requested-With:服务器判断请求类型
Accept:告知客户端可以处理的内型
'''
Headers ={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
" X-Requested-With": "XMLHttpRequest"
"Accept": "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01"
"Content-Type":" baiduApp/json; v6.27.2.14; charset=UTF-8"
}
#设置请求体
req = req =urllib.request.Request(url,headers=Headers)
response = urllib.request.urlopen(url)
data = response.read().decode("utf-8")
print(data)
#为防止多次请求被封ip,需要设置随机请求
#获取随机请求头
import urllib.request
import random
user_agent_list=[
"User-Agent_One"
"User-Agent_Two"
"User-Agent_Three"
……
]
#随机获取列表中的User-Agent
random_agent =random.choice(user_agent_list)
req = urllib.request.Request(url)
#向请求提添加User-Agent
req.add_header("User-Agent",random_agent)
response = urllib.urlopen(req)
print(response.read().decode("utf-8"))
上一篇: KMP算法