1.1什么是爬虫

爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。

从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

1.2爬虫基本流程

用户获取网络数据的方式:

方式1:浏览器提交请求—>下载网页代码—>解析成页面

方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中

爬虫要做的就是方式2。

入门python爬虫,10分钟就够了,这可能是我见过最简单的基础教学

1发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等

Request模块缺陷:不能执行JS 和CSS 代码

2获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

3解析内容

解析html数据:正则表达式(RE模块)、xpath(主要使用)、beautiful soup、css

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

4保存数据

数据库(MySQL,Mongdb、Redis)或 文件的形式。

1.3http协议 请求与响应

http协议

Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)

Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

ps:浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。

对Python感兴趣或者是正在学习的小伙伴,可以加入我们的Python学习扣qun:784758214,从0基础的python脚本到web开发、爬虫、django、数据挖掘数据分析等,0基础到项目实战的资料都有整理。送给每一位python的小伙伴!每晚分享一些学习的方法和需要注意的小细节,学习路线规划,利用编程赚外快。快点击加入我们的 python学习圈

1.3.1

request

(1) 请求方式

常见的请求方式:GET / POST

(2)请求的URL

url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定

(3)请求头

User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host;

cookies:cookie用来保存登录信息

注意:一般做爬虫都会加上请求头。

请求头需要注意的参数:

Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)

User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)

cookie:请求头注意携带

(4)请求体

请求体 如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到) 如果是post方式,请求体是format data

ps:1、登录窗口,文件上传等,信息都会被附加到请求体内 2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post

1.3.2

response

(1)响应状态码

200:代表成功

301:代表跳转

404:文件不存在

403:无权限访问

502:服务器错误

(2)response header

响应头需要注意的参数:Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来

(3)preview就是网页源代码

json数据

如网页html,图片

二进制数据等

二、基础模块

2.1requests

requests是python实现的简单易用的HTTP库,是由urllib的升级而来。

开源地址:

https://github.com/pydmy…

中文API:

http://docs.python-requests.o…

2.2re 正则表达式

在 Python 中使用内置的 re 模块来使用正则表达式。

缺点:处理数据不稳定、工作量大

2.3XPath

Xpath(XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。

在python中主要使用 lxml 库来进行xpath获取(在框架中不使用lxml,框架内直接使用xpath即可)

lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。

lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。

2.4BeautifulSoup

和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。

使用BeautifulSoup需要导入bs4库

缺点:相对正则和xpath处理速度慢

优点:使用简单

2.5Json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

在python中主要使用 json 模块来处理 json数据。Json解析网站:

https://www.sojson.com/simple…

2.6threading

使用threading模块创建线程,直接从threading.Thread继承,然后重写__init__方法和run方法

三、方法实例

3.1get方法实例

demo_get.py

3.2post方法实例

demo_post.py

3.3添加代理

demo_proxies.py

3.4获取ajax类数据实例

demo_ajax.py

3.5使用多线程实例

demo_thread.py

四、爬虫框架

4.1Srcapy框架

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

Scrapy 使用了 Twisted’twɪstɪd异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

4.2Scrapy架构图

4.3Scrapy主要组件

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

4.4Scrapy的运作流程

引擎:Hi!Spider, 你要处理哪一个网站?

Spider:老大要我处理xxxx.com。

引擎:你把第一个需要处理的URL给我吧。

Spider:给你,第一个URL是xxxxxxx.com。

引擎:Hi!调度器,我这有request请求你帮我排序入队一下。

调度器:好的,正在处理你等一下。

引擎:Hi!调度器,把你处理好的request请求给我。

调度器:给你,这是我处理好的request

引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求

下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)

引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)

Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。

引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。

管道``调度器:好的,现在就做!

4.5制作Scrapy爬虫4步曲

1新建爬虫项目scrapy startproject mySpider2明确目标 (编写items.py)打开mySpider目录下的items.py3制作爬虫 (spiders/xxspider.py)scrapy genspider gushi365 "gushi365.com"4存储内容 (pipelines.py)设计管道存储爬取内容

五、常用工具

5.1fidder

fidder是一款抓包工具,主要用于手机抓包。

5.2XPath Helper

xpath helper插件是一款免费的chrome爬虫网页解析工具。可以帮助用户解决在获取xpath路径时无法正常定位等问题。

谷歌浏览器插件xpath helper 的安装和使用:

https://jingyan.baidu.com/art…

在学习过程中有什么不懂得可以加我的python学习扣扣qun,784758214群里有不错的学习视频教程、开发工具与电子书籍。与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容

六、分布式爬虫

6.1scrapy-redis

Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(pip install scrapy-redis)

6.2分布式策略

Master端(核心服务器) :搭建一个Redis数据库,不负责爬取,只负责url指纹判重、Request的分配,以及数据的存储。

以下是我整理的python爬虫入门学习资料,都已经整理并打包好了。

Python入门 全套学习资料附带源码:

Python全套学习路线

Python零基础入门视频

在这里插入图片描述
Python项目源码
在这里插入图片描述

Python入门到进阶电子书籍和实战案例

朋友们如果需要这份完整版的Python全套学习资料,微信扫描下方CSDN官方认证二维码【免费获取】。

关于 python 爬虫 这方面知识,在网络上有一些 教程 、文章,很有价值,能够带领新手 快速 入门 。在这里我把自己学习时找到的一些 教程 列出来,与大家一起分享,欢迎补充! 《一只小 爬虫 》 《一只并发的小 爬虫 》 《 Python 简单 网络 爬虫 的编写》 《 Python 爬虫 ——抓取网页并解析HTML》 《[ Python ]网络 爬虫 (一):抓取网页的含义和URL基本构成》 《[ Python ]网络
在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。   我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。好吧~!其实你很厉害的,右键查看页面源代码。   我们可以通过 python 来实现这样一个 简单 ... Requests库的讲解 含义:requests 库是 Python 中一个非常 简单 且强大的库,相当于urllib的升级版(此处不对urllib进行讲解),在Cookie,登录验证,代理设置等操作更加的便利。 请求头(UA) UA介绍:UA全名是User Agent,中文名为用户代理。它是一个特殊字符串头,使得服务器能够识
(补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字) Python 是一种面向对象的解释型计算机程序设计语言,类似c,java ,php,JavaScript一种语言,比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而 Python 可能只要20行。 Python 是一种高级的语言。 一: python 安装:首先,根据你的Windows版本(...
本系列从零开始阐述如何编写 Python 网络 爬虫 ,以及网络 爬虫 中容易遇到的问题,比如具有反爬,加密的网站,还有 爬虫 拿不到数据,以及登录验证等问题,会伴随大量网站的 爬虫 实战来进行。 我们编写网络 爬虫 最主要的目的是爬取想要的数据还有通过 爬虫 去自动完成我们想在网站中做的一些事情。 从今天开始我会从基础开始讲解如何通过网络 爬虫 去完成你想要做的事。 先来看一段 简单 的代码。 import reques...
这是一个系列文章,笔者把从书本,网课,包括博客等多种途径自学 爬虫 的笔记和心得整理发出。一边是作为一个基础 教程 ,供读者参考,一边也是我自己对笔记的整合,对过程的记录。文章会持续更新 今天是2021.05.10 三天一更新,欢迎各位读者关注我或者关注文章。 1.1 python 爬虫 伪装 [免费伪装ip伪装请求头] 一、网络 爬虫入门 二、我的第一个 爬虫 代码 三、“指哪打哪” 四、网页信息存储和 BeautifulSoup之find用法 五,网页抓取 补充 实战心得记录 六、动态网页原理
Python 爬虫 是一种利用 Python 编程语言编写的程序,用于自动化获取互联网上的数据。想要学习 Python 爬虫 入门 教程 ,首先需要掌握 Python 编程语言的基础知识和基本语法。接着,可以学习如何使用 Python 中的第三方库(例如requests、BeautifulSoup、Scrapy等)来进行网页数据的抓取和解析。 想要深入学习 Python 爬虫 ,最好从一些 详细 教程 入手,如《 Python 爬虫入门 教程 》这本书。这本书包括了 Python 爬虫 的基本概念、操作步骤,以及各种常用库的使用方法和实践案例。对于想要系统学习 Python 爬虫 的人来说,这本书是一个很好的选择。 如果想要下载这本《 Python 爬虫入门 教程 》的PDF版本,可以通过一些技术论坛、 Python 编程社区或者一些学术网站来获取。另外,也可以通过一些购书网站或者电子图书平台来购买或下载。 总的来说,学习 Python 爬虫 是一个非常有趣和实用的技能,可以帮助我们更好地获取和分析互联网上的数据。同时,通过 详细 教程 和实践案例,可以更快地掌握 Python 爬虫 的基本原理和操作方法。希望你可以通过不断地学习和实践,成为一名优秀的 Python 爬虫 工程师。
总结的很全面的爬虫,写得赞,博主用心了。 此国产分布式函数调度框架 funboost python万能通用函数加速器 https://funboost.readthedocs.io/zh-cn/latest/articles/c8.html , 只需要@boost一行代码,加到任意新/旧爬虫项目就又强又自由又简单。 funboost 分布式函数调度框架,定位于调度用户的任何函数,只要用户在函数里面写爬虫代码,就可以分布式调度爬虫, 并且对爬虫函数施加30种控制功能,例如 qps恒定 任何时候随意关机重启代码消息万无一失确认消费 非常简单的开启多进程叠加线程/协程,这些强大的功能绝大部分爬虫框架还做不到。 此框架如果用于爬虫,不管从任何方面比较可以领先scrapy 20年,也比任意写的爬虫框架领先10年。 普通爬虫框架一般就设计为url请求调度框架,url怎么请求都是被框内置架束缚死了, 所以有些奇葩独特的想法在那种框架里面难以实现,用户需要非常之精通框架本身然后改造框架才能达到随心所欲的驾驭的目的。 普通的爬虫框架与用户手写requests 请求解析存储,在流程逻辑上是严重互斥的,要改造成使用那种框架改造需要大改特改。 而此框架是函数调度框架,函数里面用户可以随意写一切任意自由想法,天生不会有任何束缚。 使用funboost爬虫,与用户使用别的爬虫框架或者无框架用户手写多线程爬虫相比, funboost都代码更少更强更简单更自由。 pip install funboost 或者是直接使用 pip install boost_spider (powerd by funboost ,boost_spider比funboost增加了更加专门的针对爬虫请求和解析和存储) https://github.com/ydf0509/b
【爬虫教程】最详细的爬虫入门教程~ 2401_88229530: 你好,想问一下你接单嘛,想定制搜索器爬虫