因实习业务需要,正在学习中

  • 一、爬chong介绍(先把理念搞懂了再踢球——范志毅)
    • 1、爬chong架构
    • 2、Python爬chong框架
    • 3、爬chong基本流程

一、爬chong介绍(先把理念搞懂了再踢球——范志毅)

网络爬虫(又被称为网页蜘蛛、网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。互联网中最有价值的是数据,可以利用爬虫的方式高效地挖掘这些数据(比如商品信息,房产信息,金融信息等)。

1、爬chong架构

爬虫架构图主要由四部分组成,分别是调度器、URL管理器、网页下载器、网页解析器。

  1. 调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
  2. URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
  3. 网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有 urllib2(Python官方基础模块)和 requests(第三方包)
  4. 网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据 DOM 树的解析方式来解析。网页解析器有正则表达式(安装简单,速度快,但使用困难)、html.parser(Python自带)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,安装简单,使用简单,但速度慢)、lxml(使用简单,速度快,但安装困难)。

2、Python爬chong框架

Python 爬虫框架

  1. Scrapy:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。它是很强大的爬虫框架,可以满足简单的页面爬取,比如可以明确获知url pattern的情况。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。但是对于稍微复杂一点的页面,如weibo的页面信息,这个框架就满足不了需求了。它的特性有:HTML, XML源数据 选择及提取 的内置支持;提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。
  2. Crawley:高速爬取对应网站内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。
  3. Portia:是一个开源可视化爬虫工具,可让使用者在不需要任何编程知识的情况下爬取网站!简单地注释自己感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。简单来讲,它是基于scrapy内核;可视化爬取内容,不需要任何开发专业知识;动态匹配相同模板的内容。
  4. Newspaper:可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。
  5. Python-goose:Java写的文章提取工具。Python-goose框架可提取的信息包括:文章主体内容、文章主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。
  6. Beautiful Soup:比较常用,整合了一些常用爬虫需求。它是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup的缺点是不能加载JS。
  7. Mechanize:它的优点是可以加载JS。当然它也有缺点,比如文档严重缺失。
  8. Selenium:这是一个调用浏览器的driver,通过这个库你可以直接调用浏览器完成某些操作,比如输入验证码。Selenium是自动化测试工具,它支持各种浏览器,包括 Chrome,Safari,Firefox等主流界面式浏览器,如果在这些浏览器里面安装一个 Selenium 的插件,可以方便地实现Web界面的测试. Selenium支持浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,PhantomJS 用来渲染解析JS,Selenium 用来驱动以及与Python的对接,Python进行后期处理。
  9. Cola:是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。项目整体设计有点糟,模块间耦合度较高。
  10. PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。Python脚本控制,可以用合适的html解析包。

3、爬chong基本流程

  1. 必备知识:
    (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. 基本流程
    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短视频——学习中相关推荐

  1. python ffmpeg剪辑视频_视频剪辑什么鬼?Python 带你高效创作短视频

    原标题:视频剪辑什么鬼?Python 带你高效创作短视频 本文转自『AirPython』 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众 ...

  2. python 视频剪辑_视频剪辑太麻烦?用Python带你高效创作短视频

    近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等.视频剪辑过程中,Python 一些 ...

  3. Python爬虫:多平台短视频去水印下载器

    Python爬虫:多平台短视频去水印下载器 功能介绍 各平台分解 抖音 快手 微视 皮皮搞笑 总结 源码仓库 本教程描述的爬取方案定档与2020年10月26日 郑重申明:该文章介绍的技术仅供用于学习, ...

  4. python 视频转场_视频剪辑什么鬼?Python 带你高效创作短视频

    近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. 视频剪辑过程中,Python 一 ...

  5. python视频编辑过场动画_视频剪辑什么鬼?Python 带你高效创作短视频

    点击上方" AirPython ",选择"置顶公众号" 第一时间获取 Python 技术干货! 阅读文本大概需要 10 分钟. 近两年,抖音.快手将短视频推到风 ...

  6. 视频剪辑什么鬼?Python 带你高效创作短视频

    近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. ! 视频剪辑过程中,Python ...

  7. python 短视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频

    这里将告诉您视频剪辑什么鬼?Python 带你高效创作短视频,具体完成步骤: 近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节:在全民剪片浪潮中,大众使用最多的剪 ...

  8. python制作鬼畜_视频剪辑什么鬼?Python 带你高效创作短视频

    近两年,抖音.快手将短视频推到风口浪尖上,要生产出高质量的视频,离不开视频剪辑这一环节;在全民剪片浪潮中,大众使用最多的剪辑软件如:Pr.FCPX.剪印.Vue 等. 之前有两篇文章分别是实现了制作卡 ...

  9. python实现批量下载视频_利用Python实现批量下载腾讯视频!

    原标题:利用Python实现批量下载腾讯视频! 导语 利用Python下载腾讯非VIP视频,也就是可以免费观看的视频.做这个的起因是最近在看一个叫"请吃红小豆吧"的动漫,一共三分钟 ...

最新文章

  1. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)
  2. android缓存之Lrucache 和LinkedHashMap
  3. SpringMVC的数据响应-页面跳转-返回ModelAndView形式2(应用)
  4. 物体检测的过去、现在和未来
  5. [BZOJ1927]星际竞速(费用流)
  6. 巧用 Nginx 快速实现 HTTPS 双向认证
  7. javascript模板库jsrender加载并缓存外部模板文件
  8. java 基础知识九 类与对象
  9. item2vec详解
  10. 【HAVENT原创】使用 Spring Boot 的 AOP 自定义注解
  11. 敏捷测试的关键成功要素
  12. MySQL - 实战 棋牌游戏数据库开发
  13. 初、中、高级程序员的区别有哪些
  14. 南京信息工程大学计算机与科学专业,南京信息工程大学王牌专业有哪些及专业排名...
  15. 算法--二分查找(python实现)
  16. 在 Go 中处理恐慌
  17. 3dmax捕捉的基本操作2
  18. 高中心理健康教育教师资格证经验贴
  19. Java 性能笔记:自动装箱/拆箱(转)
  20. 甲骨文公司 Oracle

热门文章

  1. Ubuntu下Wine使用教程
  2. 计算机程序执行的两种方式:解释执行和编译执行
  3. Mysql--day03
  4. C# 以管理员权限删除文件
  5. FZU 2238 Daxia Wzc's problem【规律+lucas】
  6. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)
  7. mysql inner join using_MySQL INNER JOIN子句
  8. git新建本地分支并推到远程分支
  9. HTML5生日快乐祝福网页制作【蛋糕烟花+蓝色梦幻海洋3D相册】HTML+CSS+JavaScript
  10. 下推式磁悬浮(一):制作清单