网页抓取数据百度百科(如何写好爬虫之前数据的基本步骤)
优采云 发布时间: 2022-04-15 14:31网页抓取数据百度百科(如何写好爬虫之前数据的基本步骤)
一、前言
在开始写爬虫之前,我们先来了解一下爬虫
首先,我们需要知道什么是爬虫。这里直接引用百度百科的定义。网络爬虫(又称网络蜘蛛、网络机器人,在FOAF社区,更常被称为网页追逐者),是一种根据一定的规则、程序或脚本自动从万维网上爬取信息的网络爬虫。
这些还不够,我们还需要知道爬取数据的基本步骤。
爬虫爬取数据一般分为三步获取网页
做没有稻草的砖。我们需要的是数据都在网页中。如果我们无法获取网页,那么无论代码打得多么好,都是没有用的。所以爬虫的第一步一定是抓取网页。
好的
拿到网页后,我们要做的就是分析网页的结构,定位要爬取的信息,然后提取出来
保存信息
获取信息后,一般需要保存信息以备下次使用。
完成以上三步后,会写一个简单的爬虫( ̄▽ ̄)》,然后开始写壁纸爬虫
二、开始写爬虫
图片1
红框是我们要爬取的图片。
在开始写代码之前,首先要理清思路,这样可以让我们的思路更清晰,写代码更流畅,代码更简洁。
对于爬虫脚本,我们一般需要考虑以下几点: 爬什么:我们想从网页中获取什么数据
如何攀爬:使用什么库?我需要使用框架吗?有ajax接口吗?
爬取步骤:哪个先爬,哪个后爬
以我们的项目为例:爬什么:
我们的目标是下载网页中的图片。下载图片首先要获取图片的地址,图片的地址在网页中。
所以我们需要爬取网页中图片的地址。
攀登方式:
图片有几十到上百张,下载量不大。无需使用框架,直接使用requests库。
使用 xpath 解析网页。
爬取步骤:
第一步:分析网页,写入图片的xpath路径
第 2 步:获取带有 requests 库的网页
第三步:使用lxml库解析网页
第四步:通过xpath获取图片链接
第五步:下载图片
第 6 步:命名并保存图像
分析完毕,开始爬取!
第一步是分析网页,在浏览器中打开网页,按F12进入开发者模式,选择Elements选项卡,如图:
图二
使用元素选择器:
图三
找到标签后,我们就可以写出标签的xpath路径了。这个比较简单,就不详细写了。如果您有任何问题,您可以发表评论。
图片标签的xpath路径:
#地图地址
路径 = '//a[@title]/img/@src'
#为了方便给图片起名字,我也顺便把图片名字往下爬了
name = '//a[@title]/img/@alt'
下一步是应用我们所学的知识。废话不多说,直接上代码:
#-*- 编码:utf-8 -*
导入请求
从 lxml 导入 etree
#网站地址
网址 = '#39;
# 获取网页
r = requests.get(url)
r.encoding = r.apparent_encoding
#解析网页
dom = etree.HTML(r.text)
#获取图片img标签
#先获取图片所在的img标签,然后分别获取图片链接和名称
img_path = '//a[@title]/img'
imgs = dom.xpath(img_path)
#获取图片的链接和名称并下载保存
对于 imgs 中的 img:
相对路径“。” #xpath 的代表上层标签
#不要忘记xpath总是返回一个列表!
src = img.xpath('./@src')[0]
名称 = img.xpath('./@alt')[0]
#下载图片
图片 = requests.get(src)
#name 并保存图片
使用 open(name+'.jpg', 'wb') 作为 f:
f.write(image.content)
运行结果:
图片4
这样,我们就完成了一个简单版的壁纸爬虫。为什么叫简单版?原因如下:图片太小,根本不能当壁纸(其实我很懒( ̄▽ ̄)》),要获取高清壁纸的话,还需要点击图片转到下一页。为简单起见,我只是爬取了首页的缩略图。
不能自动翻页,一次只能下载一页图片。翻页可以在网页中获取到下一页的链接,或者找到URL的变化规律