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 ...
随机推荐
- PAT-进制转换
3.5-进制转换 对于一个P进制的数,如果要转换为Q进制的数,需要分为两步: ①将P进制数x转换为十进制数y 对于一个十进制数y=d1d2···dn,可以将其写为: y = d1 * 10n-1 + ...
- 大厂面试官问你META-INF/spring.factories要怎么实现自动扫描、自动装配?
大厂面试官问你META-INF/spring.factories要怎么实现自动扫描.自动装配? 很多程序员想面试进互联网大厂,但是也有很多人不知道进入大厂需要具备哪些条件,以及面试官会问哪些问题, ...
- JavaScript实现栈结构(Stack)
JavaScript实现栈结构(Stack) 一.前言 1.1.什么是数据结构? 数据结构就是在计算机中,存储和组织数据的方式. 例如:图书管理,怎样摆放图书才能既能放很多书,也方便取? 主要需要考虑 ...
- 三个值得期待的JavaScript新功能!
让我们来看看JavaScript中一些有用的即将推出的功能.您将看到他们的语法,链接以及时了解他们的进度,我们将编写一个小型测试套件,以展示如何立即开始使用这些提案! JavaScript是如何更新迭 ...
- DOM3中的自定义事件
DOM3级还定义了自定义事件,自定义事件不是由DOM原生触发的,它的目的是让开发人员创建自己的事件.要创建的自定义事件可以由createEvent("CustomEvent"); ...
- JZOJ 3453.【NOIP2013中秋节模拟】连通块(connect)
3453.[NOIP2013中秋节模拟]连通块(connect) Time Limits: 1000 ms Memory Limits: 262144 KB (File IO): input:conn ...
- webapck之多页面打包(常见)
webpack多入口打包 let path = require('path'); elt HtmlWebpackPlugin = require('html-webpack-plugin'); mod ...
- python读入写入中文名图片
import os import cv2 import numpy as np # 读入中文命名图片 def cv_imread(in_path): cv_img = cv2.imdecode(np. ...
- 一起了解 .Net Foundation 项目 No.16
.Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Orchard CMS O ...
- 什么是容器,什么是Docker?
此文转载自http://www.cnblogs.com/CloudMan6/p/6751516.html行文时有所改动 什么是容器?什么是Docker? 容器是一种轻量级.可移植.自包含的软件打包技术 ...