python网络爬虫爬取数据,python全网爬取内容

article/2025/3/19 22:39:04

大家好,小编来为大家解答以下问题,python网络爬虫爬取数据,利用python爬取数据,现在让我们一起来看看吧!

网络爬虫,就是按照一定规则自动访问互联网上的信息并把内容下载下来的程序或脚本。

在整个的Python爬虫架构里,从基础到深入我分为了10个部分:HTTP、网页、基本原理、静态网页爬取、动态网页爬取、APP爬取、多协程、爬虫框架、分布式爬虫以及反爬虫机制与应对方法神码ai火车头伪原创网址。

1.HTTP

使用Python网络爬虫首先需要了解一下什么是HTTP,因为这个跟Python爬虫的基本原理息息相关。而正是围绕着这些底层逻辑,Python爬虫才能一步步地往下进行。

HTTP全称是Hyper Text Transfer Protocol,中文叫超文本传输协议,用于从网络传输超文本数据到本地浏览器的传送协议,也是因特网上应用最为广泛的一种网络传输协议。

请求与响应

当我们从浏览器输入URL回车之后,浏览器就会向网站所在的服务器发送一个请求,服务器收到请求后对其进行解析和处理,然后返回浏览器对应的响应,响应里包含了页面的源代码等内容,经过浏览器的解析之后便呈现出我们在浏览器上看到的内容。这整个过程就是HTTP的请求与响应。

请求方法常见的请求方法有两种:GET和POST。二者的主要区别在于GET请求的内容会体现在URL里,POST请求则体现在表单形式里,所以当涉及一些敏感或私密的信息时,如用户名和密码,我们用POST请求来进行信息的传递。

响应状态码请求完之后,客户端会收到服务器返回的响应状态,常见的响应状态码有200(服务器正常响应)、404(页面未找到)、500(服务器内部发生错误)等。

2.网页

在爬虫时,我们通过响应得到的网页源代码、JSON数据等来提取需要的信息数据,所以我们需要了解一下网页的基础结构。一个网页基本由以下三部分组成:

HTML,全称Hyper Text Marked Language,中文叫超文本标记语言,用来表述网页以呈现出内容,如文字,图片,视频等,相当于网页的骨架。

JavaScript,简称JS,是一种脚本语言,能够给页面增加实时、动态、交互的功能,相当于网页的肌肉。

CSS,全称Cascading Style Sheets,中文叫层叠样式表,对网页页面进行布局和装饰,使页面变得美观、优雅,相当于网页的皮肤。

3.基本原理

Python爬虫的基本原理其实是围绕着HTTP和网页结构展开的:首先是请求网页,接着是解析和提取信息,最后是存储信息。

1) 请求

Python经常用来请求的第三方库有requests、selenium,内置的库也可以用urllib。

requests是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库。相比urllib库,requests库更加方便,可以节约我们大量工作,所以我们倾向于使用requests来请求网页。

selenium是一个用于web应用程序的自动化测试工具,它可以驱动浏览器执行特定的动作,如输入、点击、下拉等,就像真正的用户在操作一样,在爬虫中常用来解决JavaScript渲染问题。selenium可以支持多种浏览器,如Chrome,Firefox,Edge等。在通过selenium使用这些浏览器之前,需要配置好相关的浏览器驱动:

ChromeDriver:Chrome浏览器驱动

GeckoDriver:Firefox浏览器驱动

PhantomJS:无界面、可脚本编程的WebKit浏览器引擎

2)解析和提取

Python用来解析和提取信息的第三方库有BeautifulSoup、lxml、pyquery等。

每个库可以用不同的方法来提取数据:

BeautifulSoup:方法选择器find()和find_all()或CSS选择器

lxml:XPath

pyquery:CSS选择器

此外,还可以用正则表达式来提取自己想要的信息,有了它,字符串检索、替换和匹配都不在话下。

3)存储

将数据提取出之后就是对数据进行存储了。最简单的可以将数据保存为文本文件,如TXT文本、CSV文件、Excel文件、JSON文件等,也可以保存为二进制数据,如图片、音频、视频等,还可以保存到数据库中,如关系型数据库MySQL,非关系型数据库MongoDB、Redis等。

若是将数据存储为CSV文件、Excel文件和JSON文件则需要用到csv库、openpyxl库和json库。

4.静态网页爬取

了解完爬虫基本原理之后就可以爬取网页了,其中静态网页是最容易操作的。

对静态网页进行爬取,我们可以选择requests进行请求,得到网页源代码,接着使用BeautifulSoup进行解析和提取,最后选择合适的存储方法。

5.动态网页爬取

有时候在使用requests爬取网页的时候,会发现抓取的内容和浏览器显示的不一样,在浏览器里能看到要爬取的内容,但是爬取完之后的结果却没有,这就与网页是静态的还是动态的有关了。

静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。而动态网页则是基本的html语法规范与Java、VB、VC等高级程序设计语言、数据库编程等多种技术的融合,以期实现对网站内容和风格的高效、动态和交互式的管理的网页。

二者的区别在于:

静态网页随着html代码的生成,页面的内容和显示效果基本上不会发生变化了——除非修改页面代码。

动态网页的页面代码虽然没有变,但是显示的内容却可以随着时间、环境或者数据库操作的结果而发生改变。

1)Ajax

Ajax不是一门编程语言,而是利用JavaScript在不重新加载整个页面的情况下可以与服务器交换数据并更新部分网页内容的技术。

因为使用Ajax技术的网页里的信息是通过JavaScript脚本语言动态生成的,所以使用requests-BeautifulSoup的静态页面的爬取方法是抓不到数据的,我们可以通过以下两种方法爬取Ajax数据:

通过查找浏览器开发者工具里的Network-XHR/JS栏找到储存着数据的动态页面,使用requests请求网页,再将得到的数据使用json()方法进行转化就可以提取了。

使用selenium指挥浏览器,直接对数据进行抓取(或者通过selenium获取到渲染完整的网页源代码,再使用BeautifulSoup进行解析和提取数据)。

2)Cookie和Session

Cookie是网站为了辨别用户身份进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存。

Session称为“会话”,存储着特定用户会话所需的属性及配置信息。

很多情况下,页面的更多信息需要登陆才能查看,所以在面对这类网页时,需要先模拟登陆后才可以对网页作进一步爬取。当我们模拟登陆时,客户端会生成Cookie并发送给服务器。因为Cookie保存着SessionID信息,所以服务器就可以根据Cookie判断出对应的SessionID,进而找到会话。如果当前的会话是有效的,那么服务器就会判断用户已经登陆并返回请求的页面信息,这样就可以对网页作进一步爬取了。

6.APP爬取

除了web端,Python还可以爬取APP数据,不过这需要用到抓包工具,比如Fiddler。

相比web端而言,APP的数据爬取其实更容易,反爬虫也没那么强,返回的数据类型大多数为json。

7.多协程

当我们在做爬虫项目的时候,如果需要爬取的数据非常多,因为程序是一行行依次执行的,所以爬取的速度就会非常慢。而多协程就能解决这一个问题。

使用多协程,我们就可以同时执行多个任务。实际上,使用多协程时,如果一个任务在执行的过程中遇到等待,那它就会先去执行其它的任务,当等待结束,再回来继续执行之前的那个任务。因为这个过程切换得非常迅速,所以看上去像多个任务被同时执行一样,用计算机里的概念来解释的话,这其实就是异步。

我们可以使用gevent库来实现多协程,使用Queue()创建队列,spawn()创建任务,最后joinall()执行任务。

8.爬虫框架

在遇到比较大型的需求时,为了方便管理及拓展,我们可以使用爬虫框架实现数据爬取。

有了爬虫框架之后,我们就不必一个个地去组建爬虫的整个流程,只需要关心爬虫的核心逻辑部分即可,这样就大大提高了开发效率,节省了很多时间。爬虫框架有很多个,如Scrapy、PySpider等。

9.分布式爬虫

使用爬虫框架已经大大提高了开发效率,不过这些框架都是在同一台主机上运行的,如果能多台主机协同爬取,那么爬取效率就会更近一步提高。将多台主机组合起来,共同完成一个爬取任务,这就是分布式爬虫。

10.反爬虫机制与应对方法

为了防止爬虫开发者过度爬取造成网站的负担或者进行恶意的数据抓取,很多网站会设置反爬虫机制。所以当我们在对网站进行数据抓取的时候,可以查看一下网站的robots.txt了解一下网站允许爬取什么,不允许爬取什么。

常见的爬虫机制有以下4种:

请求头验证:请求头验证是最常见的反爬虫机制,很多网站会对Headers里的user-agent进行检测,一部分网站还会检测origin和referer。应对这类反爬虫机制可以在爬虫中添加请求头headers,将浏览器里对应的值以字典的形式添加进去即可。

Cookie限制:有些网站会用Cookie跟踪你的访问过程,如果发现爬虫的异常行为就会中断该爬虫的访问。应对Cookie限制类的反爬虫,一般可以通过先取得该网站的Cookie,再把Cookie发送给服务器即可,可以手动添加或者使用Session机制。不过,针对部分网站需要用户浏览页面时才能产生Cookie的情况,比如点击按钮,可以使用selenium-PhantomJS来请求网页并获取Cookie。

IP访问频率限制:一些网站会通过检测用户行为来判断同一IP是否在短时间内多次请求页面,如果这个频率超过了某个阈值,网站通常会对爬虫进行提示并要求输入验证码,或者直接封掉IP拒绝服务。针对这种情况,可以使用IP代理的方法来绕过反爬虫,如代理池维护、付费代理、ADSL拨号代理等。

验证码限制:很多网站在登陆的时候需要输入验证码,常见的有:图形验证码、极验滑动验证码、点触验证码和宫格验证码。

图形验证码:需要用到OCR技术,使用Python的第三方库tesserocr可以做到这一点。

极验滑动验证码:需要使用selenium来完成模拟人的行为的方式来验证。

点触验证码:需要在使用selenium的基础上借助第三方验证码服务平台来解决。

宫格验证码:需要使用selenium和模板匹配的方法。

验证码类型

公众号:「Python编程小记」,持续推送学习分享。


http://chatgpt.dhexx.cn/article/jn1W1tgw.shtml

相关文章

Python爬虫爬取网页数据并存储(一)

Python爬虫爬取网页数据并存储(一) 环境搭建爬虫基本原理urllib库使用requests库使用正则表达式一个示例 环境搭建 1.需要事先安装anaconda(或Python3.7)和pycharm *anaconda可在中科大镜像下下载较快 2.安装中遇到的问题&#x…

【用Java爬取网页图片——爬虫爬取数据】

用Java爬取网页图片——爬虫爬取数据 1、在创建项目中导入jsoup 2、创建一个保存下载图片的路径 3、使用URL读取网页路径,jsoup读取网页内容 4、利用属性标签获取图片连接块 5、因为该路径没有http:头,用StringBuilder增加 5、完善下载路径…

爬虫爬取数据

打开爬取工具页面,使用爬虫工具列表: 开始节点 仅仅是爬虫的起点,所有流程图必须有该节点。 爬取节点 该节点用于请求HTTP/HTTPS页面或接口 请求方法:GET、POST、PUT、DELETE等方法 URL: 请求地址 延迟时间:单位是毫秒,意思是爬取之前延迟一段时间在执行抓取 超时时间:网…

手把手教会 爬虫爬取json数据

提示:本章爬取练习的url地址 发现曲谱 (yoopu.me) 前言 我们学爬虫,有时候想要的数据并不在html文本里面,而是通过js动态渲染出来的。 如果我们需要爬取此类数据的话,我们该怎么办呢? 请读者接着往下看&#xff1a…

六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)

用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 Python爬虫六部曲 第一步:安装requests库和BeautifulS…

网络爬虫入门:网络爬虫的目的,企业获取数据的方式,可以用于做爬虫的程序语言,爬虫爬取数据的步骤

目录 爬取数据的目的: 1.获取大量数据,用于做数据分析 2.公司项目的测试数据,公司业务所需数据 企业获取数据的方式 1.公司自有数据 2.第三方数据平台购买(数据堂,贵阳大数据交易所) 3.爬虫爬取数据…

利用爬虫爬取数据集

相信大家在学习tensorflow的过程中,会想要自己动手来试试加载我们的数据集,而不再局限于从datasets上下载数据集。但是往往一个模型的训练就需要很庞大的数据集,因此写下这篇博客教大家如何用爬虫爬取图片,制作自己的数据集&#…

微信小程序实名认证接口_人脸核身接口整理

一、微信小程序实名认证接口_人脸核身接口整理 开场一个字: 悲观。目前实名接口,人脸识别接口开放度不高。“实名信息授权”已经回收。 二、人脸核身接口 1.使用条件 需要现申请通过才能使用。 目前开放的分类不多,并且还需要行业资质。 …

微信小程序—人脸识别

1.首先你要有一个可以就行人脸识别的服务器&#xff0c;然后就是上传到百度云&#xff0c;百度云人脸识别的API接口全面升级到V3版本&#xff0c;并进行开放测试 2.wxml代码 <camera device-position"{{sxt}}" flash"off" binderror"error" s…

微信小程序实现人脸识别注册登录

前言 这是一篇关于一个原创微信小程序开发过程的原创文章。涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口。小程序的主体是一个用于个人密码存储的密码管理器&#xff0c;在登陆注册阶段&#xff0c;需要调用百度云人脸识别接口以及百度云在线人脸库的管理接口。…

C# Winform开发人脸识别小程序 (基于百度接口)

目录 一、设计思路1、背景2、简介3、用到的技术4、设计功能一&#xff1a;用户注册功能概述功能示意图时序图 功能二&#xff1a;人脸识别功能概述功能示意图时序图 二、实现1、环境准备2、百度接口配置3、技术准备4、代码实现功能一&#xff1a;用户注册功能二&#xff1a;人脸…

python人脸检测与微信小程序_微信小程序人脸识别功能

本文档以微信小程序为例&#xff0c;微信小程序开发人脸核身功能需要两个申请&#xff1a;腾讯云申请人脸识别服务和小程序申请人脸识别服务&#xff08;注意&#xff1a;只有符合以下条件的机构才能在小程序端申请&#xff09; 政务&#xff1a;政府机构或事业单位 金融&…

使用uniapp开发微信小程序的人脸采集功能/人脸识别功能

✅作者简介&#xff1a;大家好我是瓜子三百克&#xff0c;励志成为全栈工程师的一枚程序猿&#xff0c;也是喜欢在学习和开发中记录笔记的小白博主&#xff01; &#x1f4c3;个人主页&#xff1a;瓜子三百克的主页 &#x1f525;系列专栏&#xff1a;uniapp前端 &#x1f496;…

无需证书微信小程序实现人脸识别—E证通

E证通 前言收费标准接入准备小程序1、 添加服务器域名白名单2、添加业务域名白名单3、安装 SDK/小程序包4、SDK 调用步骤即实操代码4.1、初始化 SDK4.2、 调用 SDK 5、拿到回调结果6、使用uni-app开发6.1、小程序运行后&#xff0c;在小程序中丢入sdk包6.2、把sdk包转换成uni-a…

小程序实现人脸识别与小程序发布

文章目录 前言主要实现功能效果演示PC端手机端 调用百度Ai人脸检测接口小程序发布流程项目源码编程之外 前言 人脸识别其实没那么复杂&#xff0c;我国几个大厂都有他们的AI开放平台&#xff0c;调用一下他们的人脸检测接口就行了&#x1f601;&#xff08;虽然接口不是自己写的…

节假日查询接口,加班,补班,日期查询,放假,日历

一、接口介绍 通过本数据&#xff0c;可以查询节假日、加班日期&#xff0c;以及每个日期的对应的国际日和我国传统节日的简介。广泛使用于日程安排、证券投资、日历等功能的应用中展示。 二、使用案例截图 如何查看调用效果&#xff1f; 1、通过链接&#xff0c;点击【在线…

php中阿里云快递物流查询接口使用

php中阿里云快递物流查询接口使用 官方给的php代码如下&#xff1a; $host "https://ali-deliver.showapi.com";$path "/showapi_expInfo";$method "GET";$appcode "你自己的AppCode";$headers array();array_push($headers, &qu…

智能疾病查询接口

疾病类目&#xff0c;疾病症状&#xff0c;智能疾病查询&#xff0c;医疗知识图谱 ​ 一、接口介绍 最全的疾病大全&#xff0c;收集了数万种常见疾病&#xff0c;任何常见疾病都可查询。 二、功能体验 三、演示效果 四、API文档 4.1 查询疾病科目 4.1.1接入点说明 查询…

调用阿里API获取城市天气信息

目录 一&#xff0e;阿里云天气预报API接口介绍2.1阿里云天气预报API介绍2.2 调用API准备工作及认识 二&#xff0e;调用天气预报API三&#xff0e;代码实现四&#xff0e;结果展示五、问题与解决办法 赵继涛&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;20…

如何调用showapiRequest解决图片验证码识别?

一、思路&#xff08;我埋了一个坑&#xff09; &#xff08;1&#xff09;保存整张登录页面的图片 &#xff08;2&#xff09;剪切验证码区域的图片 &#xff08;3&#xff09;调用showapiRequest识别剪切好的图片 二、保存整张图片 保存当前页面的整张图片括号里面是保存图…