进入网站空间,电子商务网站建设 课件,中国机械加工网怎么样,轻极免费版wordpress主题爬虫#xff08;持续更新ing#xff09;
# 网络请求
# url统一资源定位符#xff08;如#xff1a;https://www.baidu.com#xff09;
# 请求过程#xff1a;客户端的web浏览器向服务器发起请求
# 请求又分为四部分#xff1a;请求网址#xff0c;请求方法#xff08…爬虫持续更新ing
# 网络请求
# url统一资源定位符如https://www.baidu.com
# 请求过程客户端的web浏览器向服务器发起请求
# 请求又分为四部分请求网址请求方法get、post、put等请求头请求体
# 浏览器中一般都在f12中去看推荐谷歌会清晰一点
# 爬虫概念模拟浏览器发送请求获取响应
# 反爬概念保护重要数据阻止恶意网络攻击
# 反反爬针对反爬做防御措施
# 爬虫的作用1、数据采集 2、软件测试 3、抢票 4、网络安全 5、web漏洞扫描
# 通过爬取网站的数量分类通用爬虫如搜索引擎、聚焦爬虫如12306抢票就是专门爬某个网站的数据 通用爬虫爬取网站数量没有上线聚焦爬虫爬取网站数量有限有明确目标
# 聚焦爬虫根据获取数据为目的分类功能性爬虫、数据增量爬虫 功能性爬虫不获取数据只为了实现某种功能如投票、抢票、短信轰炸等 数据增量爬虫获取数据用于后续分析url与数据同时变化则整条新数据url不变数据变化数据部分更新
# 爬虫基本流程url-对url发送网络请求获取浏览器的请求响应-解析响应提取数据-保存数据
# robots协议有些时候无法获取时可以修改robots# 网络通信
# 浏览器url
# DNS服务器ip地址标注服务器
# DNS服务器返回ip地址给浏览器
# 浏览器拿到ip地址去访问服务器返回响应
# 服务器返回的数据可能是jshmtljpg等等
# 网络通信的实际原理一个请求对一个数据包文件
# 之后抓包可能会有很多个数据包共同组成了这个页面# http协议和https协议
# http协议规定了服务器和客户端互相通信的规则
# http协议超文本传输协议默认端口80
# 超文本不仅仅限于文本还可以是图片、音频、视频
# 传输协议使用共用约定的固定格式来传递换成字符串的超文本内容
# https协议httpssl安全套接字层 默认端口443
# ssl对传输内容进行加密
# https比http更安全但是性能更低
# http请求/响应的步骤1、客户端连接web服务器 2、发送http请求 3、服务器接收请求返回响应 4、释放连接tcp连接 5、客户端解析html内容# 请求头
# 请求方式 get/post、put等
# get一般来说都是想服务器要数据的详情接口而post一般是给服务器数据提交接口
# user-agent这个是模拟正常用户的操作关键
# cookies这个是登录保持一般老一点的网站用这个新的都用token
# referer当前这一次请求是从哪个请求过来的request模块
# 依赖安装 pip install requests
# 文本htmlcss等字符串形式
import requests
urlhttps://www.baidu.com
resrequests.get(url)
# text 这个方式内容会乱码str类型request模块自动根据http头部对响应编码做出有根据的推测
# res.encodingutf-8 当然你也可以指定编码类型
# print(res.text)
# content bytes类型可以通过decode进行解码 打印响应这个是解码后的默认进行utf-8
print(res.content.decode())
# 这个就是把这个内容保存为html
# with open(baidu.html,w,encodingutf-8) as h:
# h.write(res.content.decode())
#输出 这样就把所有的https://www.baidu.com请求拿到了
# 打印响应的url
print(url,res.url)
# 打印响应对象的请求头
print(request headers,res.request.headers)
# 打印响应头
print(res headers,res.headers)# 图片 把图片存到img下面
import requests
urlhttps://www.baidu.com/img/flexible/logo/pc/result.png
resrequests.get(url)
with open(./img/jwq.png,wb) as img:img.write(res.content)# 模拟浏览器发送请求
import requests
urlhttps://www.baidu.com
# 构建请求头 user-agent添加的目的是为了让服务器认为我们是浏览器发送的请求而不是爬虫软件
headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
}
# headers参数接收字典形式的请求头
resrequests.get(url,headersheaders)
print(res.content.decode())
print(len(res.content.decode())) #查看这个响应内容的长度
print(res.request.headers) #查看响应对象的请求头# user-agent池 为了防止反爬
# 先演示手动添加的user_agents池
import requests
import random
urlhttps://www.baidu.com
# 构建 user_agents池
user_agents [Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60,Opera/8.0 (Windows NT 5.1; U; en),Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.50,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.50,Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0,Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2 ,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36,Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11,Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER,Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E),Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0,Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0) ,
]
uarandom.choice(user_agents)
# 构建请求头 user-agent添加的目的是为了让服务器认为我们是浏览器发送的请求而不是爬虫软件
headers{user-agent:ua
}
# headers参数接收字典形式的请求头
resrequests.get(url,headersheaders)
# print(res.content.decode())
print(len(res.content.decode()))
print(res.request.headers)# 使用三方库 fake-useragent
# 安装 pip install fake-useragent
from fake_useragent import UserAgent
# 构建 user_agents池
ua UserAgent()
# 获取随机浏览器用户代理字符串
print(ua.random)# 使用param携带参数 quote 明文转密文 unquote 密文转明文
import requests
from fake_useragent import UserAgent
from urllib.parse import quote,unquote
# quote 明文转密文
# unquote 密文转明文
# print(quote(学习))
# print(unquote(%E5%AD%A6%E4%B9%A0))
# 构建 user_agents池
ua UserAgent()
urlhttps://www.baidu.com/s
# 你要是不想使用params的话你可以使用模板语法
# urlfhttps://www.baidu.com/s?wd{name}
#构建请求参数
nameinput(请输入关键词)
params{wd:name
}
headers{user-agent:ua.random
}
# 通过params携带参数
resrequests.get(url,headersheaders,paramsparams)
print(res.content.decode())# 获取网易云的图片
import requests
from fake_useragent import UserAgent
ua UserAgent()
urlhttps://p1.music.126.net/_JcHT6u-TYhxjDbO3IhVQA/109951170537166630.jpg?imageViewquality89
headers{# user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36user-agent:ua.random
}
# 通过params携带参数
resrequests.get(url,headersheaders)
# print(res.content.decode())
with open(img/网易云.jpg,wb) as f:f.write(res.content)# 获取qq音乐音频
import requests
from fake_useragent import UserAgent
ua UserAgent()
urlhttps://ws6.stream.qqmusic.qq.com/RS02064dfdIM38rSZY.mp3?guid7976864250vkeyAE4590431EAD34766DBAA9BA1A3715B3B45721EE23180669EA694EB7CA1F0DB4C8DE867A9883D4E897ED4E6F2ECF600CDFD34C78F2C07E09__v215192d1euin554242051fromtag120052
headers{# user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36user-agent:ua.random
}
# 通过params携带参数
resrequests.get(url,headersheaders)
# print(res.content.decode())
with open(video/晴天.mp3,wb) as f:f.write(res.content)# 获取qq音乐mv
import requests
from fake_useragent import UserAgent
ua UserAgent()
urlhttps://mv6.music.tc.qq.com/44B177558A20632E722F75FB6A67025F0BFC15AB98CC0B58FD3FC79E00B2EEDC9FAC3DF26DD0A319EACA6B2A30D24E2CZZqqmusic_default__v21ea05e5a/qmmv_0b53feaagaaao4ae4d5t4vtvikiaamuqaa2a.f9944.ts
headers{# user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36user-agent:ua.random
}
# 通过params携带参数
resrequests.get(url,headersheaders)
# print(res.content.decode())
with open(video/qq音乐.mp4,wb) as f:f.write(res.content)# 获取百度贴吧 翻页
import requests
from fake_useragent import UserAgent
ua UserAgent()
urlhttps://tieba.baidu.com/f?
nameinput(请输入关键词)
pageint(input(请输入要保存的页数))
for i in range(page):params {kw: name,ie: utf-8,pn: 0}headers {user-agent: ua.random}# 通过params携带参数res requests.get(url, headersheaders,paramsparams)# print(res.content.decode())with open(fhtml/{name}{i1}.html, wb) as f:f.write(res.content)# 获取百度贴吧转换为面向对象方式
import requests
from fake_useragent import UserAgent
class TieBa:def __init__(self):self.urlhttps://tieba.baidu.com/f?self.headers {user-agent: UserAgent().random}# 发起请求def send(self,params):# 通过params携带参数res requests.get(self.url, headersself.headers,paramsparams)return res.text# 保存def save(self,page,con):with open(fhtml/{page}.html, w,encodingutf-8) as f:f.write(con)# 程序运行def run(self):name input(请输入关键词)pages int(input(请输入要保存的页数))for page in range(pages):params {kw: name,ie: utf-8,pn: pages * 50}dataself.send(params)self.save(page,data)
te TieBa()
te.run()# 金山翻译 post
import requests
from fake_useragent import UserAgent
import jsonurl https://ifanyi.iciba.com/index.php?ctrans
headers {user-agent: UserAgent().random
}
nameinput(请输入翻译内容)
post_data {from: zh,to: en,q: name,
}
res requests.post(url, headersheaders,datapost_data)
res.encoding utf-8
dictjson.loads(res.text)
print(dict[out])# 下面就是中文的翻译
#输入 请输入翻译内容中文
#输出 the Chinese language# 代理
# 分为正向代理和反向代理
# 正向代理给客户端做代理让服务器不知道客户端的真实身份说句实在话就是保护自己的ip不会暴露要封也是封代理ip
# 反向代理给服务器做代理让浏览器不知道服务器的真实地址
# 正向代理保护客户端反向代理保护服务端
# 实际上理论应该分为三类透明代理服务器知道我们使用了代理ip也知道真实ip、匿名代理服务器能够检测到代理ip但是无法知道真实ip、高匿代理服务器既不知代理ip也不知道真实ip
# proxies代理
import requests
from fake_useragent import UserAgent
urlhttps://www.baidu.com
headers{user-agent:UserAgent().random
}
# 构建代理字典
proxies{http:1.1.1.1:9527,https:1.1.1.1:9527
}
resrequests.get(url,headersheaders,proxiesproxies)
print(res.content.decode())