【Python网络爬虫入门教程2】成为“Spider Man”的第二课:观察目标网站、代码编写

news/2024/7/19 11:36:45 标签: python, 爬虫, 开发语言, AI编程, 课程设计, 经验分享

Python 网络爬虫入门:Spider man的第二课

  • 写在最前面
    • 观察目标网站
    • 代码编写
  • 第二课总结

写在最前面

有位粉丝希望学习网络爬虫的实战技巧,想尝试搭建自己的爬虫环境,从网上抓取数据。

前面有写一篇博客分享,但是内容感觉太浅显了
【一个超简单的爬虫demo】探索新浪网:使用 Python 爬虫获取动态网页数据

本期邀请了擅长爬虫的朋友@PoloWitty,来撰写这篇博客。通过他的专业视角和实战经验,一步步引导我们入门,成为一名数据探索的“Spider Man”。

【Python网络爬虫入门教程1】成为“Spider Man”的第一课:HTML、Request库、Beautiful Soup库
【Python网络爬虫入门教程2】成为“Spider Man”的第二课:观察目标网站、代码编写
【Python网络爬虫入门教程3】成为“Spider Man”的第三课:从requests到scrapy、爬取目标网站


随着互联网数据的指数级增长,了解如何有效地提取这些信息变得越来越重要。无论是文本模型如ChatGPT,还是视觉模型如Stable Diffusion,它们的训练数据大多来源于互联网的海量数据。在这个日新月异的大数据时代,爬虫也算是其中不得不点的一项基础技能树了。

本系列文章将深入浅出地介绍Python网络爬虫的基础知识和技术,从 Requests 库到 Scrapy 框架的 入门级 使用,为你开启python网络爬虫的大门,成为spider man的一员,并最终以ScrapeMe网站作为目标示例,爬取下网站上的可爱又有趣的宝可梦照片。

在开始之前,还要啰嗦几句叠个甲,网络爬虫虽然强大,但在使用时必须遵守法律法规和网站的爬虫协议。不违法爬取数据,遵守相关法律法规哦~

请添加图片描述

这是本系列的第二篇文章,将会以ScrapeMe网站作为示例,展示如何使用第一课中学到的基础知识来对网站上的宝可梦图片进行爬取。

观察目标网站

首先,我们需要先对我们需要爬取的目标网站及目标内容进行一番观察。

直接点进目标网站,我们可以看到如下内容:

在这里插入图片描述

我们想要爬取的目标图像就处于中间位置。

再观察一下如何获取到不同page上的所有图片,点击不同page并观察对应的链接地址可以发现,通过在请求的地址链接中加入page参数,便可以访问不同的链接了。比如https://scrapeme.live/shop/page/2/?orderby=popularity,就是第二个page对应的链接地址,通过不断更换page后面的参数,便可以访问到不同的page了。

代码编写

通过上面的观察分析,我们的爬虫代码思路便很清晰了:

  1. 通过改变url=f'https://scrapeme.live/shop/page/{pageNum}/?orderby=popularity'中的pageNum参数,获取到不同的page
    1. 获取当前page下所有图片的链接
    2. 利用requests去请求相应的链接并保存至本地文件夹中

通过上面的伪代码,我们便可以写出相应的爬虫程序了:

python">import requests
from bs4 import BeautifulSoup

def download_from_url(url:str):
    '''
    利用requests库,从相应的图片链接中下载对应的图片
    结果会保存到results文件夹中
    '''
    filename = url.split('/')[-1]
    with open(f'./results/{filename}','wb') as fp:
        fig_response = requests.get(url)
        fp.write(fig_response.content)


if __name__=='__main__':
    for pageNum in range(1,49):
        url=f'https://scrapeme.live/shop/page/{pageNum}/?orderby=popularity'
        response = requests.get(url)
        soup = BeautifulSoup(response.text, 'html.parser')

        # 找到所有的图片元素
        links = soup.find_all('img')

        for link in links:
            # 找到图片对应的链接
            fig_link = link.get('src')
            # 根据链接下载相应的图片
            download_from_url(fig_link)


然后我们可以看看我们爬取下来的宝可梦图片:

在这里插入图片描述

怎么样,是不是又优雅又简单hhh,轻轻松松拿捏住了🤏

第二课总结

通过本节课程,你应该已经对如何使用requests库和Beautiful Soup库编写爬虫程序有了更加深入的认识。恭喜你,你已经能够应付大多数的爬虫场景了,已经基本入门了python 网络爬虫的世界φ(゜▽゜*)♪

接下来,本系列课程的第三课,将讲述本系列课程的提高内容:利用scrapy库以应对更多更复杂的爬虫场景。


http://www.niftyadmin.cn/n/5262410.html

相关文章

ELK之Logstash解析json报错 JSON parse error:Unrecognized character escape ‘x‘

一、报错分析 原始报错信息: JSON parse error, original data now in message field {:message>"Unrecognized character escape x (code 120)\n at [Source: (String)\"{\"timestamp\":\"2022-06-29T10:02:0008:00\",\"s…

2023.11.15 信息学日志

2023.11.15 信息学日志 1. CF1409E Two Platforms题目描述题目概况思路点拨 2. CF1804D Accommodation题目描述题目概况思路点拨 1. CF1409E Two Platforms 题目描述 https://www.luogu.com.cn/problem/CF1409E 题目概况 来源:Codeforces 洛谷难度:…

企业寄件运费贵?企业如何将企业快递费用降至最低?

按照上述情况,如果使用闪侠惠递商家寄件服务,相较于原本的费用,会节省很大一部分的成本费用的,显而易见,这是非常便宜的。 闪侠惠递的寄件服务支持圆通、德邦、京东、顺丰等多家主流快递公司,并可以对比多…

linux面试题(一)

当然,以下是更多的 Linux 面试题和答案,供你参考: 1. 什么是 Linux 操作系统? 答案:Linux 是一种开源的操作系统,它基于 UNIX,并以其稳定性、安全性和灵活性而闻名。 2. 如何在 Linux 中查看当…

Python多态原理及实现

对于弱类型的语言来说,变量并没有声明类型,因此同一个变量完全可以在不同的时间引用不同的对象。当同一个变量在调用同一个方法时,完全可能呈现出多种行为(具体呈现出哪种行为由该变量所引用的对象来决定),…

Diary23-JavaScript学习(中)

4.函数 4.1定义函数 定义方式一 function abs(x){if(x>0){return x;}else{return -x;} } 定义方式二 var absfunction(x){if(x>0){return x;}else{return -x;} } arguments参数:可以拿到传递进来的所有参数 var abs function(x){console.log("x>"x); ​fo…

【为什么POI的SXSSFWorkbook占用内存更小?】

🔓为什么POI的SXSSFWorkbook占用内存更小? 🏆POI的SXSSFWorkbook🏆POI的SXSSFWorkbook占用内存🏆扩展配置行缓存限制 🏆POI的SXSSFWorkbook SXSSFWorkbook类是Apache POI库的一部分,它是一个流…

学习IO的第七天

作业&#xff1a;使用消息队列完成两个进程间的相互通信 #include <head.h>struct msgbuf {long mtype; //消息类型char mtext[1024]; //正文大小 };#define SIZE (sizeof(struct msgbuf)-sizeof(long))int main(int argc, const char *argv[]) {//1.创…