Web Scraping(网页抓取)基本原理 - 白话篇
本文主要介绍 Web Scraping 的基本原理,基于Python语言,大白话,面向可爱的小白(^-^)。
易混淆的名称:
很多时候,大家会把,在网上获取Data的代码,统称为“爬虫”,
但实际上,所谓的“爬虫”,并不是特别准确,因为“爬虫”也是分种的,
常见的“爬虫”有两种:
- 网路爬虫 (Web Crawler),又称 Spider;Spiderbot
- 网页抓取 (Web Scraper),又称 Web Harvesting;Web Data Extraction
而,这篇文章,主要讲解的是第二种“爬虫”(Web Scraper)的原理。
Web Scraping 是什么?
简单的说 Web Scraping,(在本文里)就是指,用Python代码,从肉眼可见的网页上,抓取数据。
为什么需要 Web Scraping?
因为,重复工作太多,自己做,可能会累死!
代码的适用实例有哪些?
- 如,需要在证交所,下来50只不同股票的当前价格,
- 或者,想 print 出,新闻网站上,所有最新新闻的标题,
- 或者,只是想把网站上所有商品的价格列出来,放到 Excel 里对比下,
- 等等各种,尽可发挥你的想象力.....
Web Scraping 的基本原理:
首先,你需要了解,网页是怎么呈现在,我们屏幕上的;
- 其实就是,我们发出一个Request,
- 然后百公里外的服务器回给我们一个 Response;
- 然后我们收看到一大堆文字,
- 最后,浏览器,偷偷的把这堆文字排好了版,放在了我们屏幕上;
- 再详细的原理,可以去看我之前博文里的书,HTTP下午茶 - 小白入门书
然后,我们要了解,使用Python,如何实现它,实现原理基本就四个步骤:
- 首先,代码需要向服务器发出一个Request,然后收到一个Response(html文件)
- 这里可以,使用Python的,request库,或者 urllib标准库
- 然后,我们需要处理收到的这个Response,找到我们所需要的文字
- 这里使用,BeautifulSoup4 来实现对 html 文件的解析
- 然后,需要设计代码流程,来处理重复任务
- 这里使用,Loop什么的,来完成重复的流程
- 最后,导出我们得到的数据,最好是漂亮的Excel表格
- 这里可以先使用,pandas,来完成一些数据处理,或者计算
- 然后使用,openpyxl库来完成,写入Excel的过程
- 首先,代码需要向服务器发出一个Request,然后收到一个Response(html文件)
篇尾总结:
这篇文章,重点在于讲解实现的思路和过程,
所以,并非详尽,也并没有给出实际的代码,
但是,这个思路,几乎是网页抓取的通用套路。
就写到这里吧,想起什么再更新,
要是有写的不到位的地方,还请包涵!
Web Scraping(网页抓取)基本原理 - 白话篇的更多相关文章
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
- 基于Casperjs的网页抓取技术【抓取豆瓣信息网络爬虫实战示例】
CasperJS is a navigation scripting & testing utility for the PhantomJS (WebKit) and SlimerJS (Ge ...
- 简易数据分析 09 | Web Scraper 自动控制抓取数量 & Web Scraper 父子选择器
这是简易数据分析系列的第 9 篇文章. 今天我们说说 Web Scraper 的一些小功能:自动控制 Web Scraper 抓取数量和 Web Scraper 的父子选择器. 如何只抓取前 100 ...
- 分享一个c#t的网页抓取类
using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...
- 网页抓取:PHP实现网页爬虫方式小结
来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...
- Nutch网页抓取速度优化
Nutch网页抓取速度优化 Here are the things that could potentially slow down fetching 1) DNS setup 2) The numb ...
- Spider_基础总结5--动态网页抓取--元素审查--json--字典
# 静态网页在浏览器中展示的内容都在HTML的源码中,但主流网页使用 Javascript时,很多内容不出现在HTML的源代码中,此时仍然使用 # requests+beautifulsoup是不能够 ...
- Spider--动态网页抓取--审查元素
# 静态网页在浏览器中展示的内容都在HTML的源码中,但主流网页使用 Javascript时,很多内容不出现在HTML的源代码中,我们需要使用动态网页抓取技术. # Ajax: Asynchronou ...
- java网页抓取
网页抓取就是,我们想要从别人的网站上得到我们想要的,也算是窃取了,有的网站就对这个网页抓取就做了限制,比如百度 直接进入正题 //要抓取的网页地址 String urlStr = "http ...
随机推荐
- DotNet Core 使用 StackExchange.Redis 简单封装和实现分布式锁
前言 公司的项目以前一直使用 CSRedis 这个类库来操作 Redis,最近增加了一些新功能,会存储一些比较大的数据,内测的时候发现其中有两台服务器会莫名的报错 Unexpected respons ...
- LeetCode python实现题解(持续更新)
目录 LeetCode Python实现算法简介 0001 两数之和 0002 两数相加 0003 无重复字符的最长子串 0004 寻找两个有序数组的中位数 0005 最长回文子串 0006 Z字型变 ...
- 微信小程序状态管理工具 JStore
微信小程序状态管理工具 JStore 闲着没事做,就想着给微信小程序写一个状态管理工具,名叫 JStore,这个状态管理工具是仿照 vuex 的几个方法来写的,所以有 vuex 的基础同学很容易理解. ...
- 课题:html5图像羽化(不规则区域羽化,feather,html5羽化)
下午搜索了一堆相关文章,没有找到符合要求的. 对一张图片应用不规则区域的羽化,该怎么做呢? 首先去查了下 羽化的原理,然而没有什么用, 然后就开始从表现层去研究怎么模拟? idea 1: blur滤镜 ...
- Java基础--插入排序
直接插入排序算法 (从后往前找到合适位置插入) 基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止. 例: 34,4 ...
- JZOJ 5235. 【NOIP2017模拟8.7A组】好的排列
5235. [NOIP2017模拟8.7A组]好的排列 (File IO): input:permutation.in output:permutation.out Time Limits: 1000 ...
- js 面向对象中,定义一个函数的过程
定义一个函数做的两件事:1: 实例化一个Function对象:2: 实例化一个Object对象,并给该函数扩展prototype属性指向这个构造函数 大致过程如图所示: 每一种引用类型(函数,对象,数 ...
- vue项目用sha256、md5、base64加密密码
无论你开发什么样的项目,你可能都会要开发登录.注册.修改密码.忘记密码这些功能,少数项目除外!!要实现这些功能,对于保护用户或者管理员账号密码,这是我们程序员肯定要做的事情.要是用户密码不加密,用明文 ...
- 《JavaScript 模式》读书笔记(1)— 简介
哇,看了自己最近的一篇文章,其实那时候刚接触Jest,啥也不会(虽然现在其实也一样不会,嘿嘿),就像记录下工作中遇到的一些问题,其实,后来的一些发现吧,那两篇文章写的其实是有一些问题的.希望不会给大家 ...
- Nginx之负载均衡配置(一)
前文我们聊了下nginx作为反向代理服务器,代理后端动态应用服务器的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12430543.html:今天我们来聊 ...