Python爬虫学习——爬虫入门

本文属于一个新的系列(刚挖的坑),用于记录和分享个人的Python爬虫学习过程与学习笔记。

01

网络爬虫

和之前的推文一样,我们介绍名词之前先看看词条是怎么说的。

图片

其实看到“是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本”这里就差不多了,我们要做的也就是使用 Python 语言编写程序,对我们需要的信息进行抓取。

那么说了这么多,这个所谓的“抓取”到底是什么?

简单点,从我们打开浏览器,在导航栏输入一个网址,按下回车之后,等待一小会就能看到一个页面。这里我把过程简化下,输入网址(向网站服务器提出请求),看到页面(服务器响应了请求并返回数据)。

而我们的网络爬虫程序简单来说就是代替我们的人工操作,来向服务器提出请求,并将服务器响应后返回的数据进行处理,获取我们真正想要的那部分内容,这也就是抓取这一过程。

图片

了解过计算机网络就知道,实际过程远不止这些步骤,这里只是一个简化后的示意图。

简单解释了“抓取”是什么,接下来就要说明如何才能进行抓取。

直接上示意图,看下如何利用 Python 完成这一过程。

图片

这里使用 Python 的一个第三方库 requests,具体安装步骤可自行查阅资料。图中 get(链接) 这一步就是提出请求,而请求结果,也就是响应数据会作为返回值,图中使用变量 response 进行接收,这样一个简单流程就结束了。

02

补充介绍

如果在慕课上看过北京理工大学嵩天老师的爬虫课程,就应该还记得嵩天老师提供的一个爬虫代码的通用模板。

import requests

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"

不过我个人在编码过程中不是很喜欢使用 try-except 语句,只有编码结束之后,对于可能存在问题之处才补充上异常捕获。如果一开始就将异常捕获,不利于发现问题与解决问题。

另外关于状态码,可以使用 r.status_code 查看到状态码,上述代码中 r.raise_for_status() 是用于抛出异常的,状态码大致有以下这些。

图片

03

爬虫示例

讲不如练。接下来直接开始一个简单的爬虫示例——获取“www.baidu.com” 搜索栏上方的图片。

由于还没有介绍到 HTML、正则表达式等内容,加上此处也只是第一个爬虫程序,所以使用简单点的方法,打开页面后,直接按下“F12”键,或者鼠标右击,检查元素。

点击最左侧元素检查器,然后将鼠标放到要爬取的图片位置,点击一下。

具体操作示意图如下

图片

完成上述步骤之后,就能够看到下方的网页源代码里面已经自动定位到了封面图片那一行的位置。

图片

既然找到了图片位置,我们双击上图中圈中的部分,将链接选中,然后复制下来,加上 http 头部,使整个链接完整,再将链接放到程序中,调用爬取代码,将爬取结果写到图片文件即可。

需要注意的是,图片文件可以直接使用二进制写入,爬取时返回的数据如果使用 r.text 是文本形式,如果使用 r.content 则是二进制形式,这里使用二进制形式。

import requests

def getImageContent(url):
    r = requests.get(url, timeout=30)
    r.encoding = r.apparent_encoding
    return r.content

def saveImage(content):
    # 直接二进制形式写入
    with open("baidu.gif", 'wb') as f:
        f.write(content)

if __name__ == "__main__":
    url = "https://www.baidu.com/img/pc_543eada36f89b37efc8499b17780a18b.gif"
    content = getImageContent(url)
    saveImage(content)

上述代码去除了异常处理部分,至于 r.encoding = r.apparent_encoding 这一句也可以去除,不过在之后的爬虫学习过程中,为避免字符解码的问题,尽量保留这一句。

最终爬取到的图片为下图

图片

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

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

在这里插入图片描述

二、Python必备开发工具

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

四、实战案例

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

五、Python练习题

检查学习结果。

六、面试资料

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

 最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值