用Python爬网页需要了解以及掌握的基本知识

本文介绍了网页抓取的基本流程,包括爬虫原理、Python编程、HTML和CSS的理解、TCP/IP协议、JavaScript在网页渲染中的作用,以及加密和抓包分析技术。此外,还提到了遵循robots.txt规则和处理动态加载数据的重要性,以及如何避免被网站封禁的策略。
摘要由CSDN通过智能技术生成

网页抓取更侧重于将网络上的非结构化数据(常见的是HTML格式)转换成为能在一个中央数据库中储存和分析的结构化数据。

需要具备一定的前端知识,最起码应该能大概看懂网页内容,像基本的html元素,css样式,javascript等,不要求熟练掌握,这些是最基础的东西。

一、基本要掌握的8个知识点

1 爬虫原理了解

互联网就是一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。

如果把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息,可以把节点间的连线比作网页与网页之间的链接关系。

爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码。

获取网页源代码后,接下来就是分析网页源代码,从中提取我们想要的数据。

提取信息后,我们可以简单保存为 TXT 文本或 JSON 文本,也可以保存到数据库,如 MySQL 和 MongoDB 等,还可保存至远程服务器。

2 Python学习

可以去网上找一些教学视频、入门学习教程等等,去看一下,然后有基础了之后还可以找一些进阶的学习视频,再打打基础。

3 HTML了解

了解网页的结构,内容等,帮助后续的数据爬取。

HTML被称为超文本标记语言,有着一系列的标签,这些标签的组合可以显示出文字,图片,视频等内容。

我们平时访问的网页,就是通过html编写的。

想要看到平常的网页,就需要为文档添加css样式,如果想要添加动画效果,图片能够自动播放或者点击出现一些反馈,这就需要用到JavaScript来编写脚本。

常用的HTML标签:

4 TCP/IP协议

了解在网络请求和网络传输上的基本原理,帮助今后写爬虫的时候理解爬虫的逻辑。

5 JavaScript

简称为js,js的运行需要靠浏览器来运行。

它是一种脚本语言,具有即时编译的特点,js可以做一些动态的操作,比如添加一个元素,改变元素的内容,改变css样式。

  • JavaScript 渲染页面

现在网页越来越多地采用 Ajax、前端模块化工具来构建,整个网页可能都是由 JavaScript 渲染出来的,也就是说原始的 HTML 代码就是一个空壳。

网页请求这个js文件,获取到该文件后,便会执行其中的 JavaScript 代码,而 JavaScript 则会改变 HTML 中的节点,向其添加内容,最后得到完整的页面。

对于,可以通过selenium或者找到Ajax的请求地址就可以解决。

6 CSS

css能够对网页中的各种元素(即我们提到的HTML标签),我们可以通过它来设置背景颜色,设置元素的大小位置,设置字体的排版等等。

  • 选择器

在 CSS 中,我们使用 CSS 选择器来定位节点。

例如,代码中div节点的id为container,那么就可以表示为#container,其中#开头代表选择id,其后紧跟id的名称。

如果我们想选择class为wrapper的节点,便可以使用.wrapper。

这里以点(.)开头代表选择class(我的记法是:点class,#为number的简称代表id),其后紧跟class的名称。


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>This is a Demo</title>
    </head>
    <body>
        <div id="container">
            <div class="wrapper">
                <h2 class="title">Hello World</h2>
                <p class="text">Hello, this is a paragraph.</p>
            </div>
        </div>
    </body>
</html>

另外,还有一种选择方式,那就是根据标签名

筛选。

例如想选择二级标题,直接用h2即可,这是最常用的3种表示,分别是根据id、class、标签名筛选,请牢记它们的写法。

7 加 密

爬取网站的时候,经常会遇到各种各样类似加密的情形,比如:字体加密,构造参数加密。

想要抓取就必须要懂得找到对应的js文件,研究这些参数是怎么构造的,现在对于更多更全的信息都是通过 App 来展示的。

一些 App 在内部实现的时候对代理加了一些校验,如绕过系统代理直接连接或者检测到了使用了代理,直接拒绝连接。

这需要考虑使用 Wireshark、Tcpdump 在更底层的协议上抓包。

8 抓包分析

要会进行抓包分析,会使用浏览器自带的开发者工具。

网页中有些数据是动态加载的,只在请求网页时才加载数据,在网页源码中是不显示的,所以你需要会进行抓包分析,解析json数据等。

我们经常模拟登录时,也需要进行抓包分析,需要post提交哪些内容等,只有在抓包分析后,才能构建相关提交数据:

其次就是要梳理一下爬虫的思路;

简单的说,就是你想要抓取一个网站的内容时,需要怎么一步步做好,需要现有一个大的整体的架构,才能进一步做好接下来的工作。

二、其他需要注意的

检查robots.txt

许多网站会将爬取规则和限制写在 robots.txt 里,这个文件通常是在根域名下,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制。

Q:如何查看这个 robots.txt 文件?

A:你只需要在 目标网站站点域名 后面加上 robots.txt 即可。

例如:http://www.example.com/robots.txt

robots.txt 里一般会规定哪些网页不允许被自动抓取,或者限定某个页面被机器人访问的频率。

虽然大部分人不理会这些,但还是要先看一看它的内容,我们还是尽量遵守robots.txt 文件里面的要求为好。

不管什么用户,两次爬取请求之间的间隔时间不可以小于 5秒钟,否则你访问的这个网站会将网页自动跳整到 /trap 链接。

也就是说:网站服务器封禁了你的IP,如果你行为恶劣,可能会对你的IP封禁更长的时间,甚至是永久封禁!

小心HTML里的坑

HTML 标签中可能包含 id 或 class,或二者兼有。

HTML id 是一个独一无二的标记,而 HTML class 可能在多个元素中被重用。

class 名或元素内容可能会改变,而这种改变可能会让你的代码崩溃,或是返回错误的结果。

一般来说,有两种办法避免这种情况出现:

① 采用 id 来获取元素内容,而不是 class,因为 id 一般来说不那么容易改变。

② 记得检查返回值,如果返回了 None,那很可能有什么地方出了问题。

不过,因为有一些 class 可能并不总是出现,相关的元素并不一定在每个列表中都有,所以你需要统计某个元素在所有列表中出现的比例。

比如计算返回 None 的次数;

如果每次都返回 None,那也许你需要检查代码或者是 HTML 源码,看看是不是这个元素在网站的 HTML 中就已经改变了。

对User agent伪装

每当你访问一个网站时,网站都会通过浏览器的 user agent 获取到你的浏览器信息。

有些网站如果没收到 user agent 信息,就不会返回任何内容,还有些网站会根据不同的 user agent,给不同的浏览器提供不同的内容。

网站并不会阻止正常用户的访问,但如果你用同一个 user agent 发起每秒 200 次的请求,这就有问题了吧?

可以通过 user_agent 库,产生(几乎是)随机的 user agent,也可以自定义一个特殊的 user agent。

是否被屏蔽了?

如果你拿到的返回值经常是 404(找不到页面)、403(被禁止)、408(访问超时),就应该考虑你是不是被这个站点屏蔽了。

防止被禁掉

短时间内频繁的访问服务器,很有可能会被服务器识别为爬虫,禁掉IP。

这个时候你就需要使用IP代理池等,尽可能不被服务器发现。

检查网站地图

网站提供的 Sitemap 文件(即 网站地图),它提供了网站站点里面所有页面的链接,它们组成了这个 Sitemap 文件。

我们无须爬取某个网站站点里面的每一个网页,网站提供的 Sitemap 文件 帮助了我们的网络爬虫定为网站最新的内容。

虽然Sitemap文件提供了一种爬取网站的有效方式,但是我们仍需要对其谨慎处理。

因为该文件经常存在缺失、过期或者不完整的问题。

存储数据

爬取下来的数据,如果数据量大的话,就需要了解一些常用的数据库的使用,像mysql,mongodb等,方便查询也方便管理。

爬虫框架

最后就是学一些爬虫常用的框架;

可以明显提高开发效率,避免重复造轮子, 像python的开源爬虫框架scrapy等,使用起来也更快捷。

在这里插入图片描述

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

👉Python学习开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

在这里插入图片描述

👉Python入门学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

在这里插入图片描述

在这里插入图片描述

👉Python实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉100道Python练习题👈

检查学习结果。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

👉Python副业兼职学习路线👈

​​在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

读者福利:CSDN大礼包:《Python小白从入门到精通全套学习资料》免费分享 安全链接免费领取

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要学习python虫的基础知识,首先需要掌握python3的语法,因为这是打好基础的前提。Python3的语法非常简洁,相对来说学习起来应该不会太困难。 形象地理解,虫就像一只机器蜘蛛,它模拟人的行为去各个网站上抓取数据或返回数据。虫的基本操作包括发送HTTP请求获取网页内容,解析网页内容,提取数据,并进行存储或其他操作。 了解虫的分类也是基础知识之一。根据目标网站的不同,虫可以分为通用虫和聚焦虫。通用虫是能够抓取互联网上所有网站的数据,而聚焦虫则针对特定的网站或者特定的数据进行抓取。 如果你想深入学习python虫,我推荐你查看CSDN上分享的一份Python全套学习资料,其中包括学习路线、软件、源码、视频、面试题等等。这份资料是由一位经验丰富的作者整理的,希望可以对正在学习或者想要学习Python的朋友有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python虫入门教程(非常详细)](https://blog.csdn.net/2201_75362610/article/details/131282069)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值