python爬虫学习记录(1)

一、概述

本文主要记录当前比较流行的几种python爬虫的用法,以及对应的操作案例。

二、配置简介以及操作步骤与流程

1.开发环境简介:Anaconda3下自带的python版本和Pycharm2023.3.5版本。

2.操作步骤与流程。

2.1 通常先将我们要用的库导入到Pycharm里,如下图所示。(注:本文以爬取豆瓣网top250为案例进行学习。)
2.2 获取网页源地址——url

网页源地址即为,我们要获取的数据都会被存放到这个网页当中;url就相当于那个屋子的门牌号,我们所想要的数据就存放在这个屋子里面。再将我们需要导入的库导入完成后,我们就需要来获取对应网址的url。

通过对于豆瓣top250网页的浏览我们发现,它一共有10页,每一页上面又25个电影的数据,同时观察到每一页的url的变化之处,设计好我们的url。

第一页的url

第二页的url

因此我们在Pychram当中设置对应的url,如下图所示。

2.3 模拟用户来对网站进行访问

目前大多数的网站都存在反爬机制,所以我们需要模拟用户来对网站进行访问。

首先,打开网站,鼠标右键点击检查,会出现如下图所示图片在右侧导航栏钟带点击网络,同时按下ctrl和r进行刷新,随后点击任意一个文件,在它的标头中寻找“User-Agent”,将后面部分的数据复制,如下图所示。

随后回到Pycharm运行环境当中,调用requests.get()方法,模拟用户,对网站进行访问。如下图

(注:headers 是一个字典类型的对象)

随后输出response(不带.text),看结果是否会输出<Response [200]>,如果输出,则证明访问成功,否则,表示访问失败。

随后输出response(带.text),看是否获取到每一页的网页源码。

2.4 利用BeautifulSoup对获取到的网页源码进行解析
2.4.1利用BeautifulSoup对获取到的网页源码进行解析的主要原因:

(1)通过BeautifulSoup中的find和find_all方法对解析完之后的BeautifulSoup对象进行查找,根据不同的属性以及类标签,获取到我们想要数据所在的部分。

(2)导入re库,利用re.compile方法,根据我们所需要数据的特点进行匹配,随后再利用re.findall方法获取到所有符合的数据。

2.4.2主要操作步骤如下:

(1)对response进行解析

在此处我们利用的是lxml解析器,主要特点就是速度比较快。

(2)利用findall方法获取我们所需要的数据

首先,还是回到豆瓣top250网页上。

其次,鼠标右键点击检查,看右侧开发者窗口(本人用的是Microsoft Edge浏览器)中的网页源代码。

根据图片上的信息,我们可以发现,在这一页上每个电影的数据都存放在一个class为item的div属性的标签下。因此我们利用findall方法来获取我们所需要的数据(返回的对象是一个可迭代对象),并对他进行循环遍历,获取到每一个电影的数据。

(3)我爬取的主要是电影名、导演、演员、评分、评价人数和年份。接下来以电影名为例,来进行re库的使用。

首先,还是返回到刚才打开的豆瓣top250页面上 ,根据图片上的信息我们可以发现电影名都存放在一个class为title的span属性标签下,因此我们模仿数据所在这一行的网页源代码样式来进行re.compile方法的使用。

接下来,我们根据数据的网页源代码的特征进行re.compile方法的识别匹配,如下图所示。

“,”之前的内容,是我们根据数据在网页源代码中的格式,来对他进行一个匹配,“(.*?)”就是表示的是我们所要获取的内容。

然后,我们利用re库中的findall方法,以上一步re.compile的结果作为模板,对获取到的数据进行获取,并只返回第一个数据。最后输出结果进行一个验证。

接下来对导演、演员、年份、评分以及评价人数数据的获取,也是进行上述操作,在此不做过多叙述。

2.5将爬取到的数据进行输出保存

一般都是将数据保存到一个csv文件当中。这里我们引用pandas库,将最终获取到的数据变成DatFrame类对象,并利用to_csv()方法,将获取到的数据输出成一个csv文件。

最后,打开我们获取到的csv文件。

操作过程当中还存在一些需要改进的地方,我也会积极去学习改进。欢迎大家批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值