2-爬虫-代理池搭建、代理池使用(搭建django后端测试)、爬取某视频网站、爬取某视频网站、bs4介绍和遍历文档树

1 代理池搭建
2 代理池使用
2.1 搭建django后端测试

3 爬取某视频网站
4爬取某视频网站
5 bs4介绍和遍历文档树

1 代理池搭建

# ip代理-每个设备都会有自己的IP地址-电脑有ip地址---》访问一个网站---》访问太频繁---》封ip-收费:靠谱稳定--提供api-免费:不稳定--自己写api用-开源的:https://github.com/jhao104/proxy_pool免费代理---》爬取免费代理---》验证---》存到redis中flask搭建web---》访问某个接口,随机获取ip# 搭建步骤:1 git clone git@github.com:jhao104/proxy_pool.git2 pycharm中打开3 安装依赖:创建虚拟环境  pip install -r requirements.txt4 修改配置文件: DB_CONN = 'redis://127.0.0.1:6379/0'5 运行调度程序和web程序# 启动调度程序python proxyPool.py schedule# 启动webApi服务python proxyPool.py server6 api介绍/	GET	api介绍	None/get	GET	随机获取一个代理	可选参数: ?type=https 过滤支持https的代理/pop	GET	获取并删除一个代理	可选参数: ?type=https 过滤支持https的代理/all	GET	获取所有代理	可选参数: ?type=https 过滤支持https的代理/count	GET	查看代理数量	None/delete	GET	删除代理	?proxy=host:ip# http和https代理-以后使用http代理访问http的地址-使用https的代理访问https的地址

2 代理池使用

"公网""内网" 是网络术语,用于描述不同的网络范围和可访问性。以下是它们的定义和示例:**公网 (Internet)**:- **定义:** 公网是指全球范围的互联网,连接了世界各地的计算机、服务器和设备,允许它们通过因特网协议(IP)进行通信。- **示例:** - 当您使用浏览器访问网站,例如 Google、Facebook 或 Twitter,您是通过公网与这些网站的服务器通信。- 电子邮件发送和接收也是通过公网进行的,例如使用 Gmail 或 Outlook 邮箱。- 在社交媒体上与全球范围内的朋友互动,如发布推文、分享照片或发布视频。**内网 (Intranet)**:- **定义:** 内网是指一个私有网络,通常在组织、公司或机构内部使用,用于内部通信、数据共享和资源管理。它通常不直接连接到公网。- **示例:** - 企业内部网络:大多数组织都有内部网络,用于员工之间的通信和共享内部资源。这些网络可以包括内部网站、文件共享和内部电子邮件系统。- 家庭网络:在家庭网络中,您可以有多个设备(例如台式电脑、笔记本电脑、智能手机、智能家居设备等)连接到一个本地路由器,形成一个内部网络。这个内部网络允许这些设备共享文件、打印机和互联网连接,但通常不会直接暴露给公网。在这两个示例中,公网是全球范围的互联网,而内网是限定在特定组织或家庭的私有网络。
内网通常需要特定的访问权限才能连接到公网,并且通常通过防火墙或路由器进行保护,以确保安全性和隐私。

在这里插入图片描述

2.1 搭建django后端测试

import requests
res = requests.get('http://192.168.1.252:5010/get/?type=http').json()['proxy']
proxies = {'http': res,
}
print(proxies)
# 我们是http 要使用http的代理
respone = requests.get('http://139.155.203.196:8080/', proxies=proxies)
print(respone.text)

ds-1698993940761)

# 步骤:1 写个django,只要访问,就返回访问者ip2 部署在公网上---》python manage.py runserver 0.0.0.0:80003 本机使用代理测试import requestsres1 = requests.get('http://192.168.1.63:5010/get/?type=http').json()dic = {'http': res1['proxy']}print(dic)res = requests.get('http://47.93.190.59:8000/', proxies=dic)print(res.text)# 补充:代理有 透明和高匿透明的意思:使用者最终的ip是能看到的高匿:隐藏访问者真实ip,服务端看不到

3 爬取某视频网站

# 目标:爬取该网站的视频,保存到本地  https://www.pearvideo.com/ import requests
import re# 请求地址是:
# https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0
res = requests.get('https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=0')
# print(res.text)
# 解析出视频地址---》正则
video_list = re.findall('<a href="(.*?)" class="vervideo-lilink actplay">', res.text)
# print(video_list)
for video in video_list:video_id = video.split('_')[-1]url = 'https://www.pearvideo.com/' + videoprint(url)  # 向视频详情发送请求---》解析出页面中mp4视频地址---》直接下载即可header = {'Referer': url}res_json = requests.get(f'https://www.pearvideo.com/videoStatus.jsp?contId={video_id}&mrd=0.14435938848299434',headers=header).json()mp4_url = res_json['videoInfo']['videos']['srcUrl']real_mp4_url = mp4_url.replace(mp4_url.split('/')[-1].split('-')[0], 'cont-%s' % video_id)print(real_mp4_url)# 把视频保存到本地res_video = requests.get(real_mp4_url)with open('./video/%s.mp4' % video_id, 'wb') as f:for line in res_video.iter_content(1024):f.write(line)# res=requests.get('https://www.pearvideo.com/video_1526860')
# print(res.text)# 第一层反扒:需要携带referfer
# header = {'Referer': 'https://www.pearvideo.com/video_1527879'}
# res = requests.get('https://www.pearvideo.com/videoStatus.jsp?contId=1527879&mrd=0.14435938848299434', headers=header)
# print(res.text)# 反扒二:
# https://video.pearvideo.com/mp4/adshort/20190311/   1698982998222  -13675354_adpkg-ad_hd.mp4  返回的
# https://video.pearvideo.com/mp4/adshort/20190311/   cont-1527879   -13675354_adpkg-ad_hd.mp4   能播的
# s = 'https://video.pearvideo.com/mp4/adshort/20190311/1698982998222-13675354_adpkg-ad_hd.mp4'
# print(s.replace(s.split('/')[-1].split('-')[0], 'cont-1527879'))

4 爬取新闻

# 没有一个解析库---》用正则---》解析库--》html/xml
import requests
# pip install BeautifulSoup4
from bs4 import BeautifulSoupres = requests.get('https://www.autohome.com.cn/news/1/#liststart')
# print(res.text)
# 找到页面中所有的类名叫article  ul标签
soup = BeautifulSoup(res.text, 'html.parser')
# bs4的查找
ul_list = soup.find_all(class_='article', name='ul')  # 所有的类名叫article  ul标签
print(len(ul_list))
# 循环再去没一个中,找出所有li
for ul in ul_list:li_list = ul.find_all(name='li')for li in li_list:h3 = li.find(name='h3')if h3:title = h3.texturl = 'https:' + li.find(name='a')['href']if url.startswith('//'):url = 'https:' + urldesc = li.find(name='p').textreade_count = li.find(name='em').textimg = li.find(name='img')['src']print(f'''文章标题:{title}文章地址:{url}文章摘要:{desc}文章阅读数:{reade_count}文章图片:{img}''')# 爬5页--->把图片保存到本地--->把打印的数据存储到mysql中--》建个表

5 bs4介绍和遍历文档树

# BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库,解析库
# pip install beautifulsoup4
from bs4 import BeautifulSouphtml_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b><span>lqz</span></p><p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p><p class="story">...</p>
"""
soup = BeautifulSoup(html_doc, 'html.parser')  # 解析库可以使用 lxml,速度快(必须安装)   可以使用python内置的 html.parser# print(soup.prettify())-----重点:遍历文档树----------
#遍历文档树:即直接通过标签名字选择,特点是选择速度快,但如果存在多个相同的标签则只返回第一个
#1、用法  通过  .  遍历
# res=soup.html.head.title
# res=soup.p
# print(res)
#2、获取标签的名称
# res=soup.html.head.title.name
# res=soup.p.name
# print(res)
#3、获取标签的属性
# res=soup.body.a.attrs  # 所有属性放到字典中 :{'href': 'http://example.com/elsie', 'class': ['sister'], 'id': 'link1'}
# res=soup.body.a.attrs.get('href')
# res=soup.body.a.attrs['href']
# res=soup.body.a['href']
# print(res)#4、获取标签的内容
# res=soup.body.a.text  #子子孙孙文本内容拼到一起
# res=soup.p.text
# res=soup.a.string  # 这个标签有且只有文本,才取出来,如果有子孙,就是None
# res=soup.p.strings
# print(list(res))#5、嵌套选择# 下面了解
#6、子节点、子孙节点
# print(soup.p.contents) #p下所有子节点
# print(list(soup.p.children)) #得到一个迭代器,包含p下所有子节点
# print(list(soup.p.descendants)) #获取子子孙节点,p下所有的标签都会选择出来#7、父节点、祖先节点
# print(soup.a.parent) #获取a标签的父节点
# print(list(soup.a.parents) )#找到a标签所有的祖先节点,父亲的父亲,父亲的父亲的父亲...
#8、兄弟节点
# print(soup.a.next_sibling) #下一个兄弟
# print(soup.a.previous_sibling) #上一个兄弟
#
print(list(soup.a.next_siblings)) #下面的兄弟们=>生成器对象
# print(soup.a.previous_siblings) #上面的兄弟们=>生成器对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/132050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Framebuffer 介绍和应用编程

前言&#xff1a; 使用的开发板为韦东山老师的 IMX6ULL 目录 Framebuffer介绍 LCD 操作原理 涉及的 API 函数 1.open 函数 2.ioctl 函数 3.mmap 函数 Framebuffer 程序分析 1.打开设备 2.获取 LCD 参数 3.映射 Framebuffer 4.描点函数 5.随便画几个点 6.上机实验…

RPC 原理详解

文章目录 什么是 RPCRPC 基本原理RPC核心功能服务寻址数据编解码网络传输一次RPC的调用过程 实践基于HTTP协议的RPC基于TCP协议的RPC 什么是 RPC RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;即远程过程调用&#xff0c;它允许像调用本地服务一样调用远程服…

DC电源模块隔离电路的影响

BOSHIDA DC电源模块隔离电路的影响 DC电源模块隔离电路是电子设备中常用的一种电路。它的作用是在设备中两个电路之间建立一定的隔离&#xff0c;以保证两个电路之间不会传递电流或信号。这种隔离电路的影响可以从以下几个方面来分析。 首先&#xff0c;隔离电路可以提高安全性…

Linux个性化登录提示信息

在Linux系统中&#xff0c;您可以为每个用户登录后显示个性化的提示信息。这通常通过修改用户的shell配置文件来实现&#xff0c;这个文件通常是用户的.bashrc或.bash_profile文件。以下是一些示例步骤&#xff0c;来实现这个目标&#xff1a; 打开终端并登录到Linux系统。 使…

第68讲:MySQL触发器的核心概念以及常见的触发类型应用案例

文章目录 1.触发器的概念2.触发器操作的语法结构3.各类触发器的典型应用案例3.1.需求描述以及实现思路3.2.创建日志表3.3.INSERT类型的触发器3.4.UPDATE类型的触发器3.5.DELETE类型的触发器 1.触发器的概念 触发器是与表中数据相关的数据库对象&#xff0c;当表中的数据产生in…

完美解决RuntimeError: expected scalar type Long but found Float

文章目录 一、错误解释RuntimeError: expected scalar type Long but found Float二、错误分析三、解决办法总结 一、错误解释RuntimeError: expected scalar type Long but found Float RuntimeError&#xff1a;应为标量类型Long&#xff0c;但找到了Float 二、错误分析 我…

MongDB 的安装 无废话

MongDB 的安装 1 安装 MongDB https://www.mongodb.com/try/download/community-kubernetes-operator 这里我们选择 ZIP 解压到文件夹 创建 data 文件 在 data 文件夹里面创建 db 和 logs 文件夹 进入 bin 目录 输入 cmd 回车 2 启动 MongDB 输入启动命令 mongod --dbpath..\…

csapp bomb lab part4

csapp bomb lab part4 phase 5 是一个循环&#xff0c;不断累加&#xff0c;访问的地址基于0x4024b0, phase 6 之后更新 汇编 地址计算 寄存器 cl 是 x86 汇编语言中的一个 8 位寄存器&#xff0c;它是 ecx 寄存器的低位部分。 具体来说&#xff0c;x86 架构中的寄存器可…

centos7中多版本go安装

安装go的方式 官网下载tar.gz包安装 # 1.下载tar包 wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz # 2.解压tar包到指定路径 tar -xvf go1.18.1.linux-amd64.tar.gz -C /usr/local/go1.18 # 3.配置环境变量&#xff0c;打开 /etc/profile 文件添加以下文件每次开机时…

详解 SpringMVC 的 HttpMessageConverter

文章目录 前言参考资料内容1、[RequestBody ](/RequestBody )2、RequestEntity3、[ResponseBody ](/ResponseBody )4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity 推荐读物 《Spring Boot微服务实战(第2版)》内容简介目录 前言 HttpMessag…

笔记本360wifi,wifi共享大师掉线,

笔记本上搭建的wifi热点&#xff0c;例如360wifi、wifi共享大师等&#xff0c;手机连接wifi后总是隔一段时间掉线。原因:网卡驱动和无线驱动有问题&#xff0c;需要更新或换成稳定的网卡驱动和无线驱动。 解决方案: ① 安装驱动精灵: ②点击驱动管理 ③ ④ ⑤进行阻止windo…

iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境

文章目录 一、基础环境准备1.1、MacOS虚拟机 二、iPhone虚拟机三、MacOS虚拟机连接iphone真机四、扩展&&问题4.1、如果appium启动app失败&#xff0c;可能是appium driver没有安装xcuitest插件4.2、下载并安装Appium服务端&#xff0c;inspector元素定位器4.3、下载app…

贝锐向日葵亮相阿里云“云栖大会”:独创专利算法赋能全新云桌面

2023年10月31日-11月2日&#xff0c;一年一度的云栖大会如期举办&#xff0c;国产远程连接服务创领者贝锐受邀参与。活动现场&#xff0c;贝锐CTO张小峰进行了分享&#xff0c;宣布贝锐旗下国民级远程控制品牌“贝锐向日葵”与无影展开合作&#xff0c;同时全新的“云桌面”将于…

数据结构:AVL树讲解(C++)

AVL树 1.AVL树的概念2.平衡因子3.节点的定义4.插入操作5.旋转操作&#xff08;重点&#xff09;5.1左单旋5.2右单旋5.3左右双旋5.4右左双旋 6.一些简单的测试接口7.完整代码 1.AVL树的概念 普通二叉搜索树&#xff1a;二叉搜索树 二叉搜索树虽可以缩短查找的效率&#xff0c;但…

安装MySQL时出现 由于找不到 MSVCR120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

--------------------------- mysqld.exe - 系统错误 --------------------------- 由于找不到 MSVCR120.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。 --------------------------- 确定 --------------------------- 安装MySQL时出现 “This appl…

分布式服务框架设计

目录 服务框架的设计 服务框架的功能 服务框架的性能指标 服务治理需要哪些功能 服务框架的设计 尽管不同的分布式服务框架实现细节存在差异&#xff0c;但是核心功能差异不大&#xff0c;下面的架构图描绘了一个分布式服务框架的整体逻辑架构 总共分为 3 层&#xff1a;1…

Ansible自动化安装部署及使用

目录 前言 一、环境概况 修改主机名&#xff08;可选项&#xff09; 二、安装部署 1.安装epel扩展源 2.安装Ansible 3.修改Ansible的hosts文件 4.生成密钥 三、Ansible模块使用介绍 Command模块 Shell模块 User模块 Copy模块 File模块 Hostname模块 Yum模块 Ser…

Ubuntu重启后进入initramfs导致无法开机解决方案

今天&#xff0c;我的电脑意外关机&#xff0c;重新开机后打开了虚拟机。该虚拟机使用的是 Ubuntu 22.04 系统。但重启后&#xff0c;系统一直显示(initramfs):&#xff0c;导致无法正常启动。最后&#xff0c;在网上查找了一些解决方案&#xff0c;成功解决了这个开机问题。在…

圣杯布局/双飞翼布局/flex/grid等,实现CSS三栏自适应布局的几种方法

简介 三栏布局是网页设计中常用的布局&#xff0c;即网页中的内容被分为三块&#xff1a;左侧/中间/右侧。其中两侧部分宽度固定&#xff0c;中间部分宽度自适应的根据浏览器宽度撑满剩余空间。而三栏布局也有很多变形&#xff0c;比如两栏或者N栏布局&#xff0c;上中下三栏布…

Linux shell编程学习笔记21:用select in循环语句打造菜单

一、select in循环语句的功能 Linux shell脚本编程提供了select in语句&#xff0c;这是 Shell 独有的一种循环语句&#xff0c;非常适合终端&#xff08;Terminal&#xff09;这样的交互场景&#xff0c;它可以根据用户的设置显示出带编号的菜单&#xff0c;用户通过输入不同…