Python爬虫简单入门教程

这篇具有很好参考价值的文章主要介绍了Python爬虫简单入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇 Python 爬虫教程主要讲解以下 5 部分

  1. 了解网页结构;
  2. 使用 requests 库抓取网站数据;
  3. 使用 Beautiful Soup 解析网页;
  4. 清洗和组织数据;
  5. 爬虫攻防战;

了解网页结构

网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JScript(活动脚本语言)。

  • HTML 负责定义网页的内容
  • CSS 负责描述网页的布局
  • JavaScript 负责网页的行为

HTML

HTML 是网页的基本结构,它相当于人体的骨骼结构。网页中同时带有“<”、“>”符号的都属于 HTML 标签。常见的 HTML 标签如下所示:

<!DOCTYPE html> 声明为 HTML5 文档
<html>..</html> 是网页的根元素
<head>..</head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8。
<title>..<title> 元素描述了文档的标题
<body>..</body> 表示用户可见的内容
<div>..</div> 表示框架
<p>..</p> 表示段落
<ul>..</ul> 定义无序列表
<ol>..</ol>定义有序列表
<li>..</li>表示列表项
<img src="" alt="">表示图片
<h1>..</h1>表示标题
<a href="">..</a>表示超链接

代码如下 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Python</title>
</head>
<body>
<a href="https://blog.csdn.net/qq_45719125">点击访问</a>
<h1>CSDN mei0351</h1>
<h2>Python爬虫</h2>
<div>
<p>认识网页结构</p>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
</div>
</body>
</html>

 关于爬虫的合法性

 几乎每一个网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断是否有禁止访客获取的数据。
以B站为例,在浏览器中访问 https://www.bilibili.com/robots.txt,如图所示。

Python爬虫简单入门教程

 User-Agent:*

Disallow:/

除前面指定爬虫外,不允许其他爬虫获取任何数据。

使用requests库请求网站 

网页请求的过程分为两个环节:

  1. Request (请求):每一个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求。
  2. Response(响应):服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容,客户端接收服务器响应的内容,将内容展示出来,就是我们所熟悉网页请求的方式也分为两种:
  3. GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。
  4. POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。

使用GET方式抓取数据

在Pycharm中输入如下代码 

import requests        #导入requests包
url = 'http://www.bilibili.com/'
strhtml = requests.get(url)        #Get方式获取网页数据
print(strhtml.text)

 

使用 POST 方式抓取数据 

使用BeautifulSoap解析网站

清洗和组织数据

爬虫攻防战

爬虫是模拟人的浏览访问行为,进行数据的批量抓取。当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话就是说,服务器是不喜欢有人抓取自己的数据。那么,网站方面就会针对这些爬虫者,采取一些反爬策略。
服务器第一种识别爬虫的方式就是通过检查连接的 useragent 来识别到底是浏览器访问,还是代码访问的。如果是代码访问的话,访问量增大时,服务器会直接封掉来访 IP。
那么应对这种初级的反爬机制,我们应该采取何种举措?
在进行访问时,我们在开发者环境下不仅可以找到 URL、Form Data,还可以在 Request headers 中构造浏览器的请求头,封装自己。服务器识别浏览器访问的方法就是判断 keyword 是否为 Request headers 下的 User-Agent。

 因此,我们只需要构造这个请求头的参数。创建请求头部信息即可,代码如下:

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
response = request.get(url,headers=headers)

 写到这里,很多读者会认为修改 User-Agent 很太简单。确实很简单,但是正常人1秒看一个图,而个爬虫1秒可以抓取好多张图,比如 1 秒抓取上百张图,那么服务器的压力必然会增大。也就是说,如果在一个 IP 下批量访问下载图片,这个行为不符合正常人类的行为,肯定要被封 IP。
其原理也很简单,就是统计每个IP的访问频率,该频率超过阈值,就会返回一个验证码,如果真的是用户访问的话,用户就会填写,然后继续访问,如果是代码访问的话,就会被封 IP。这个问题的解决方案有两个,第一个就是常用的增设延时,每 3 秒钟抓取一次,代码如下: 

 import time
time.sleep(3)

 但是,写爬虫的目的是为了高效批量抓取数据,这里设置 3 秒钟抓取一次,效率未免太低。其实,还有一个更重要的解决办法,那就是从本质上解决问题。不管如何访问,服务器的目的就是查出哪些为代码访问,然后封锁 IP。解决办法:为避免被封 IP,在数据采集时经常会使用代理。当然,requests 也有相应的 proxies 属性。首先,构建自己的代理 IP 池,将其以字典的形式赋值给 proxies,然后传输给 requests,代码如下:

proxies={
    "http":"http://10.10.1.10:3128",
    "https":"http://10.10.1.10:1080",
}
response = requests.get(url, proxies=proxies)

附言:

本文仅对 Python 爬虫及实现过程做了简明扼要地介绍,仅能使初学者对 python 爬虫有一个粗浅的认识,并不能让你完全掌握 Python 爬虫。文章来源地址https://www.toymoban.com/news/detail-458953.html

到了这里,关于Python爬虫简单入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

    网站链接: aHR0cHM6Ly93d3cua3Vnb3UuY29tLw== 正常抓包分析找到音频链接地址   通过链接搜索找到对应的数据包位置     分析 signature 参数加密位置     通过 s 列表 合并成字符串, 传入d函数中进行加密, 返回32位, 还是比较明显的MD5加密, 相当于请求参数除了signature 以外, 在头尾加了一

    2024年02月02日
    浏览(52)
  • Python逆向爬虫入门教程: 网易云音乐加密参数 params & encSecKey 逆向解析

    网站链接: aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvZGlzY292ZXIvdG9wbGlzdD9pZD0zNzc4Njc4 正常流程抓包分析数据, 找到音频链接   找到歌曲信息对应数据包         分析加密参数位置     找到对应的加密位置, 其余就去扣代码即可, 缺什么补什么就行了, 主要是注意一下传入的参数问题, 因为它传入的

    2024年03月27日
    浏览(59)
  • PyCharm下载安装教程(超详细),从零基础入门到精通,从这篇开始

    1、Pycharm 简介 2、Pycharm下载 3、环境变量的配置 4、Pycharm的使用 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测

    2024年02月11日
    浏览(57)
  • Android SDK安装教程(超详细),从零基础入门到实战,从看这篇开始

    前言 在使用appnium的时候,除了安装JDK之外,也需要安装Android SDK。那么,正确安装Android SDK是怎样的呢,跟着小编继续往下看。 安装Android SDK和环境配置 1.安装Android SDK 首先打开官网:https://www.androiddevtools.cn/ 选中导航中的Android SDK工具,再点击SDK Tools。 网页会自动往下翻,

    2024年02月14日
    浏览(59)
  • 【Kotlin】从Java转向Kotlin,耐心看完这篇博客就够了。Kotlin快速入门教程分享

    适合群体:Java已经入门的人,如果是零基础,不要勉强!虽然没有深奥的术语,即使有也尽可能通俗易懂 。 Kotlin和Java都是Jvm语言,相同的部分能省则省(篇幅有限),重点是Kotlin。 示例代码的注释很重要。最好可以使用IDEA等开发工具运行一下。 最后创作不易,全部都是自

    2023年04月08日
    浏览(56)
  • 爬虫教程1_Xpath 入门教程

    在编写爬虫程序的过程中提取信息是非常重要的环节,但是有时使用正则表达式无法匹配到想要的信息,或者书写起来非常麻烦,此时就需要用另外一种数据解析方法,也就是本节要介绍的 Xpath 表达式。 XPath(全称:XML Path Language)即 XML 路径语言,它是一门在 XML 文档中查找

    2024年02月14日
    浏览(34)
  • Java爬虫教程:从入门到精通

    在互联网时代,海量的数据被存储在各种网页中。而Java作为一门强大的编程语言,具备丰富的网络编程能力,可以帮助开发者高效地获取和处理网络数据。本教程将带您从入门到精通,学习如何使用Java编写爬虫程序,掌握爬取网页、解析数据和存储数据的技巧。 1.1 什么是爬

    2024年02月04日
    浏览(39)
  • Pandas 简单入门教程

    什么是Pandas? Pandas是一个开源的Python数据分析库,它提供了快速、灵活、易于使用的数据结构,旨在使数据清洗和分析变得简单快捷。 安装Pandas 你可以使用以下命令来安装Pandas: 导入Pandas 要使用Pandas,你需要将其导入到Python环境中: 数据结构 Pandas提供了两种数据结构: Se

    2023年04月20日
    浏览(44)
  • [2]SpinalHDL教程——Scala简单入门

    shell里面输入 文件形式 接下来我们使用 scalac 命令编译它: 编译后我们可以看到目录下生成了 HelloWorld.class 文件,该文件可以在Java Virtual Machine (JVM)上运行。 编译后,我们可以使用以下命令来执行程序: Scala是运行在jvm上面的一款语言,在语法和概念上难免和java会有相似之

    2023年04月20日
    浏览(35)
  • 网页爬虫逆向与AST入门系列教程(七、AST的应用之代码转换)

    在前面的文章中,我们已经介绍了AST的基本概念,生成方法以及在代码混淆解析、反爬虫技术解析和数据提取与分析中的应用。在本篇中,我们将继续探讨AST在网页爬虫逆向中的另一个关键领域:代码转换。 1. 代码转换简介 代码转换是指通过对代码进行解析、修改和重新生

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包