python随机批量爬qu短视频——学习中
因实习业务需要,正在学习中
- 一、爬chong介绍(先把理念搞懂了再踢球——范志毅)
- 1、爬chong架构
- 2、Python爬chong框架
- 3、爬chong基本流程
一、爬chong介绍(先把理念搞懂了再踢球——范志毅)
网络爬虫(又被称为网页蜘蛛、网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。互联网中最有价值的是数据,可以利用爬虫的方式高效地挖掘这些数据(比如商品信息,房产信息,金融信息等)。
1、爬chong架构
爬虫架构图主要由四部分组成,分别是调度器、URL管理器、网页下载器、网页解析器。
- 调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
- URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
- 网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有 urllib2(Python官方基础模块)和 requests(第三方包)
- 网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据 DOM 树的解析方式来解析。网页解析器有正则表达式(安装简单,速度快,但使用困难)、html.parser(Python自带)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,安装简单,使用简单,但速度慢)、lxml(使用简单,速度快,但安装困难)。
2、Python爬chong框架
Python 爬虫框架
- Scrapy:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知url pattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。它的特性有:HTML, XML源数据 选择及提取 的内置支持;提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。
- Crawley:高速爬取对应网站内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
- Portia:是一个开源可视化爬虫工具,可让使用者在不需要任何编程知识的情况下爬取网站!简单地注释自己感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。简单来讲,它是基于scrapy内核;可视化爬取内容,不需要任何开发专业知识;动态匹配相同模板的内容。
- Newspaper:可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
- Python-goose:Java写的文章提取工具。Python-goose框架可提取的信息包括:文章主体内容、文章主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。
- Beautiful Soup:比较常用,整合了一些常用爬虫需求。它是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup的缺点是不能加载JS。
- Mechanize:它的优点是可以加载JS。当然它也有缺点,比如文档严重缺失。
- Selenium:这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。Selenium是自动化测试工具,它支持各种浏览器,包括 Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个 Selenium 的插件,可以方便地实现Web界面的测试. Selenium支持浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与Python的对接,Python进行后期处理。
- Cola:是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。项目整体设计有点糟,模块间耦合度较高。
- PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。Python脚本控制,可以用合适的html解析包。
3、爬chong基本流程
- 必备知识:
(1)HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签。带“<”、“>”符号的都是属于 HTML 的标签,并且标签都是成对出现的。常用HTML标签如下:
<html>..</html> 表示标记中间的元素是网页
<body>..</body> 表示用户可见的内容
<div>..</div> 表示框架
<p>..</p> 表示段落
<li>..</li>表示列表
<img>..</img>表示图片
<h1>..</h1>表示标题
<a href="">..</a>表示超链接
一般网页主要是HTML、CSS、JavaScript组成。CSS表示样式,主要定义网页的样式,JavaScript一般都是在网页中实现网站的功能的,大多情况我们都是爬取都是JavaScript执行之前的页面,除非有些特殊情况,比如,我们爬取的元素是需要在JavaScript执行后渲染出来的。但这样情况比较少。我们主要了解HTML、CSS就可以。
(2)TCP/IP协议,HTTP协议:
主要是HTTP协议,HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点。HTTP 是基于 TCP/IP 协议的应用层协议。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
- 通过浏览器查看的Http协议的请求和响应:
按快捷键 F12,进入开发者模式,单击 Network,此时内容为空,例如
现在刷新浏览器或访问一个网址,就可以看到请求的列表,找一个点击一下就可以看到请求和响应的Header信息。通过此方式我们可以看出网站是通过GET方式还是POST请求的。如图:
- 基本流程
1)发起请求
通过HTTP库向目标站点发起请求(request),请求可以包含额外的header等信息,等待服务器响应。
eg.执行GET请求:
import requests
start_url = 'https://www.baidu.com'
#指定http协议信息,伪装成正常浏览器请求
headers = {"Host": "www.baidu.com","Referer": "https://www.baidu.com","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36","X-Requested-With": "XMLHttpRequest"}
#自定义代理ip,此处的ip需要自行更换,只需要将ip和port按格式拼接即可,可以去网上免费代理中寻找:http://www.xicidaili.com/nn
#proxies = {"https": "https://127.0.0.1:1080", "http": "http://127.0.0.1:1080"}
response = requests.get(url=start_url, headers=headers, proxies=proxies)
print(response) # 返回值:<Response [200]>
eg. 执行POST请求:
import requests
url = 'https://en.artprecium.com/catalogue/vente_309_more-than-unique-multiples-estampes/resultat'
#指定http协议信息,伪装成正常浏览器请求
headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Accept-Language": "zh","Cache-Control": "max-age=0","Connection": "keep-alive","Cookie": "PHPSESSID=m2hbrvp548cg6v4ssp0l35kcj7; _ga=GA1.2.2052701472.1532920469; _gid=GA1.2.1351314954.1532920469; __atuvc=3%7C31; __atuvs=5b5e9a0418f6420c001","Host": "en.artprecium.com","Upgrade-Insecure-Requests": "1","User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
}
# 构造form表单
data = {"IdEpoque": "","MotCle": "","Order": "","LotParPage": "All","IdTypologie": ""}
response = requests.post(url=url, data=data, headers=headers, timeout=10)
print(response) # 返回值:<Response [200]>
2)获取响应内容
见上,如果服务器能正常响应,会得到一个Response,Response的内容则是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型。
3)解析内容
获取的向应内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
eg. 使用 Beautiful Soup 解析网页:
import bs4
import requestsresponse = requests.get("https://en.wikipedia.org/wiki/Mathematics")
if response is not None:html = bs4.BeautifulSoup(response.text, 'html.parser')title = html.select("#firstHeading")[0].textparagraphs = html.select("p")for para in paragraphs:print (para.text)# just grab the text up to contents as stated in questionintro = '\n'.join([ para.text for para in paragraphs[0:5]])print (intro)
eg. 使用Lxml解析网页:
from lxml import etree
source_html = """<div><ul><li class="item-0"><a href="link1.html">first item</a></li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-inactive"><a href="link3.html">third item</a></li><li class="item-1"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></ul></div>"""
html = etree.HTML(source_html)
print(html)
result = etree.tostring(html)#会对的html标签进行补全
print(result.decode("utf-8"))
4)保存数据
一般根据需要可以存为文本,也可以保存到数据库,或者保存特定格式的文件等。
python随机批量爬qu短视频——学习中相关推荐
- python ffmpeg剪辑视频_视频剪辑什么鬼?Python 带你高效创作短视频
原标题:视频剪辑什么鬼?Python 带你高效创作短视频 本文转自『AirPython』 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众 ...
- python 视频剪辑_视频剪辑太麻烦?用Python带你高效创作短视频
近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等.视频剪辑过程中,Python 一些 ...
- Python爬虫:多平台短视频去水印下载器
Python爬虫:多平台短视频去水印下载器 功能介绍 各平台分解 抖音 快手 微视 皮皮搞笑 总结 源码仓库 本教程描述的爬取方案定档与2020年10月26日 郑重申明:该文章介绍的技术仅供用于学习, ...
- python 视频转场_视频剪辑什么鬼?Python 带你高效创作短视频
近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. 视频剪辑过程中,Python 一 ...
- python视频编辑过场动画_视频剪辑什么鬼?Python 带你高效创作短视频
点击上方" AirPython ",选择"置顶公众号" 第一时间获取 Python 技术干货! 阅读文本大概需要 10 分钟. 近两年,抖音.快手将短视频推到风 ...
- 视频剪辑什么鬼?Python 带你高效创作短视频
近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. ! 视频剪辑过程中,Python ...
- python 短视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频
这里将告诉您视频剪辑什么鬼?Python 带你高效创作短视频,具体完成步骤: 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪 ...
- python制作鬼畜_视频剪辑什么鬼?Python 带你高效创作短视频
近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节;在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. 之前有两篇文章分别是实现了制作卡 ...
- python实现批量下载视频_利用Python实现批量下载腾讯视频!
原标题:利用Python实现批量下载腾讯视频! 导语 利用Python下载腾讯非VIP视频,也就是可以免费观看的视频.做这个的起因是最近在看一个叫"请吃红小豆吧"的动漫,一共三分钟 ...
最新文章
- java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)
- android缓存之Lrucache 和LinkedHashMap
- SpringMVC的数据响应-页面跳转-返回ModelAndView形式2(应用)
- 物体检测的过去、现在和未来
- [BZOJ1927]星际竞速(费用流)
- 巧用 Nginx 快速实现 HTTPS 双向认证
- javascript模板库jsrender加载并缓存外部模板文件
- java 基础知识九 类与对象
- item2vec详解
- 【HAVENT原创】使用 Spring Boot 的 AOP 自定义注解
- 敏捷测试的关键成功要素
- MySQL - 实战 棋牌游戏数据库开发
- 初、中、高级程序员的区别有哪些
- 南京信息工程大学计算机与科学专业,南京信息工程大学王牌专业有哪些及专业排名...
- 算法--二分查找(python实现)
- 在 Go 中处理恐慌
- 3dmax捕捉的基本操作2
- 高中心理健康教育教师资格证经验贴
- Java 性能笔记:自动装箱/拆箱(转)
- 甲骨文公司 Oracle
热门文章
- Ubuntu下Wine使用教程
- 计算机程序执行的两种方式:解释执行和编译执行
- Mysql--day03
- C# 以管理员权限删除文件
- FZU 2238 Daxia Wzc's problem【规律+lucas】
- FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)
- mysql inner join using_MySQL INNER JOIN子句
- git新建本地分支并推到远程分支
- HTML5生日快乐祝福网页制作【蛋糕烟花+蓝色梦幻海洋3D相册】HTML+CSS+JavaScript
- 下推式磁悬浮(一):制作清单