08《Python 原生爬虫教程》最简单的爬虫案例开发

liftword2个月前 (02-21)技术文章15

前面的学习中我们已经简单了解了一些爬虫所需的知识,这节课我们就来做一个小爬虫来实践下我们前面所学习的知识,这节课我们会爬取慕课网首页所有的课程名称:

1. 爬取慕课网首页所有课程名称

我们第一个爬虫程序,是来爬取慕课网的首页的所有课程信息的名字。下面的代码锁使用到的技术有的我们并没有涉及到,后面的学习中我们会一一讲解。这里只是让大家对爬虫程序有个大概的了解,熟悉最基本的爬虫流程,以及对爬虫处理有一个粗略的印象,同时,也是激发大家学习的热情,让大家对爬虫不仅停留在理论上,也可以实际操作去加深印象。

1.1 建立 imoocSpider.py文件

爬虫文件的命名一定要准确,爬虫爬取的是哪一个网站就用哪一个网站来进行命名,这样以后我们写的爬虫越来越多会方便管理。

文件创建好之后首先导入 requests 第三方库和页面解析工具 BeautifulSoup:

import requests   # requests库,用来发送网络请求

from bs4 import BeautifulSoup   # 一个解析库,用来解析网页结构

Tips:BeautifulSoup 我们在后面会讲到,这里只是先用一下。

1.2 定义网址变量

定义网址变量 url,url 中存储的是我们要爬取的网站,这个小爬虫中我们要爬取的网站是:https://www.imooc.com。

url = "https://www.imooc.com" #慕课网首页地址

1.3 创建请求头部

创建请求头部,因为服务器会分辨请求的是浏览器或者是爬虫,如果是爬虫的话会直接断开请求,导致请求失败。为了不让我们的爬虫暴露,所以要给它加上一层伪装,这样服务器就会认为是浏览器在请求了:

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 请求头部

1.4 发起请求

使用 requests 库中的 get 方法来进行请求:

r = requests.get(url, headers= headers) # 发送请求

1.5 解析请求结果

因为请求的结果是 HTML 格式的,所以我们使用 BeautifulSoup 来解析我们的请求结果:

bs = BeautifulSoup(r.text, "html.parser")   # 解析网页

在返回的请求结果中,我们想要的数据都是在 h3 标签中包裹着,所以我们使用 BeautifulSoup 查找返回结果中所有的 h3 标签并剥离,存储在变量 mooc_classes 中。

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位课程信息

1.6 解析数据

将每一个 h3 标签中的课程名称剥离,并存储在 class_list 这个列表中去,最后将课程信息存入到文本文件中:

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("课程名称 : {} \n".format(title)) #格式化课程信息

with open('mooc_classes.txt', "a+") as f: # 将课程信息写入文本文件中
    for text in class_list:
        f.write(text)

1.7 最终代码

下面就是我们这个小爬虫的最终代码:

实例演示

import requests   # requests库,用来发送网络请求

from bs4 import BeautifulSoup   # 这是一个解析库,用来解析网页

url = "https://www.imooc.com" #慕课网首页地址

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 请求头部

r = requests.get(url, headers= headers) # 发送请求

bs = BeautifulSoup(r.text, "html.parser")   # 解析网页

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位课程信息

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("课程名称 : {} \n".format(title)) #格式化课程信息

with open('mooc_classes.txt', "a+") as f: # 将课程信息写入文本文件中
    for text in class_list:
        f.write(text)

上面的程序,就是一个最简单的一个爬虫程序。最后,我们格式化输出的样式,使得输出格式为 课程名称+慕课网课程名称的样式,最后把结果保存到一个 TXT 文件里面。最后我们打开 TXT 文件看一下效果:

如下图所示:

Tips:一般在正式的爬虫开发中我们不会把数据存储到文件中去,而是会存储到数据库中,这样才能最大限度的保证数据不会丢失。

2. 小结

本小节,通过运用 BeautifulSoup 以及 Requests 实现了一个最简单的爬虫程序,关于它们的学习,我们会在后面的章节进行详细论述。这个小程序,只是向大家演示一个最基本的爬虫的工作流程。细心的同学肯定会发现,我们的代码量并不是很多,就轻松实现了一个简单的爬取工作。其实,正式因为使用Python 编写爬虫程序的简单方便,才使得 Python 语言成为了写爬虫程序的首选。

相关文章

Python实现一个基础爬虫?_用python做一个爬虫

Python爬虫技术就是指通过Python语言来编写一些自动化的数据处理程序从网页上来获取自己想要的数据,我们可以通过Python爬虫来获取公开网页上的数据,对数据进行分析、存储、数据可视化展示等操作...

什么是Python爬虫?一篇文章带你全面了解爬虫

一、什么叫爬虫爬虫,又名“网络爬虫”,就是能够自动访问互联网并将网站内容下载下来的程序。它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的然后存储到云端,为网友...

程序员python入门课,30分钟学会,30行代码写爬虫项目

现在很多人学习编程,最开始就是选择的python,因为python现在比较火,薪资水平在程序员领域也是比较高的,入门快,今天就给大家分享一个用python写的小爬虫项目,只需要30行代码,认真学习,...

详细介绍一下Python中如何使用来创建爬虫?

Selenium是一个用来对Web应用程序进行测试的自动化测试工具,能够模拟出用户在浏览器中的各种行为,通过自动化的操作来执行任务,例如说可以模拟用户点击按钮、填写表单、抓取网页内容等,虽然是一个自动...

巨细!Python爬虫详解_python爬虫详细教程

来源:【公众号】Python技术爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。如果我们把互联网比作一张大...

Python爬虫常用的8个技巧,让你爬取数据得心应手

今天跟大家分享几个我在爬虫中用到的技巧,让你轻松爬取所需数据。技巧一:随机暂停,迷惑反爬机制高频率访问容易被网站识别为爬虫,所以我们要学会“劳逸结合”!使用 time.sleep() 函数,加上随机时...