爬虫的小练习

本文详细介绍了如何使用Python进行爬虫实践,包括准备工作、爬取目标、爬取列表页和详情页的步骤。通过requests库获取网页HTML,结合正则表达式re提取信息,最后将数据保存为JSON文件。整个过程涉及网络请求、HTML解析、异常处理和日志记录,为初学者提供了完整的爬虫项目实例。
摘要由CSDN通过智能技术生成

1.准备工作

我们需要先做好如下准备工作。

1.安装好Python3,最低为3.6 版本,并能成功运行Python3 程序。

2.了解 Python HTTP请求库requests 的基本用法。

  1. 了解正则表达式的用法和 Python 中正则表达式库 re 的基本用法。

2.爬取目标

我们本次爬虫要完成的目标有:

1.利用 requests 爬取这个站点每一页的电影列表,顺着列表再爬取每个电影的详情页;

2.用正则表达式提取每部电影的名称、封面、类别、上映时间、评分、刷情简介等内容

把以上爬取的内容保存为JSON 文本文件;

3.爬取列表页

第一步爬取肯定要从列表页人手,我们首先观察一下列表页的结构和翻页规则。在浏览器中访问,然后打开浏览器开发者工具

观察每一个电影信息区块对应的 HTML 以及进入到详情页的 URL,可以发现每部电影对应的区块都是一个div节点,这些节点的 class 属性中都有 el-card这个值。每个列表页有 10个这样的 div节点

接下来再分析一下是怎么从列表页进入详情页的,我们选中第一个电影的名称,看下结果,如图所示。

可以看到这个名称实际上是一个 h2 节点,其内部的文字就是电影标题。h2 节点的外面包含一个a节点,这个a节点带有 href属性,这就是一个超链接,其中 href 的值为 /detail/1,这是一个相对网站的根 URL的路径,加上网站的根 URL 就构成了)detail/1,也就是这部电影的详情页的 URL。这样我们只需要提取这个href 属性就能构造出详情页的URL 并接着爬取了。

好,分析到这里,逻辑基本清晰了

程序的实现

我们要完成列表页的爬取,可以这么实现:

遍历所有页码,构造 10页的索引页URL;

从每个索引页,分析提取出每个电影的详情页 URL。

那么我们写代码来实现一下

首先,需要先定义一些基础的变量,并引人一些必要的库,写法如下

import requests

import logging

import re

from urllib.parse import urljoin

RESULT_DIR = 'result'

except requests.RequestException:

logging.error('error occurred while scraping %s', url, exc_info=True)

考虑到不仅要爬取列表页,还要爬取详情页,所以这里我们定义了一个较通用的爬取页面的方法.叫作 scrape page,它接收一个参数 url,返回页面的 HTML代码。上面首先判断状态码是不是 200.如果是,就直接返回页面的 HTML代码;如果不是,则输出错误日志信息。另外这里实现了 requests 的异常处理,如果出现了爬取异常,就输出对应的错误日志信息。我们将 logging 库中的 error 方法里的 exc info 参数设置为 True,可以打印出 Traceback 错误堆栈信息。

有了 scrape_page 方法之后,我们给这个方法传人一个 url,如果情况正常,它就可以返回页面的 HTML 代码了。

在 scrape_page 方法的基础上,我们来定义列表页的爬取方法吧,实现如下:

def scrape_index(page):

i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值