欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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"))