【python】【爬虫】无反爬图片爬取

这是一个最简单的、没有任何针对反爬措施的爬虫。走错门的施主可以绕道了~~~

一、问题

受疫情影响,所有学校课程采用网课教学,各种课程群应运而生。想一次性找到所有课程群二维码,以供查询,怎么办呢?

二、原理

1、探明网页图片链接格式在这里插入图片描述

打开学校指定的查询课程二维码的网站,找到图片对应的http请求返回的图片链接,发现所有图片的链接都是http://xxx.cn/os/pic/+课程号-课序号+.jpg的格式。因此,只要将对应的课程号-课序号与之进行拼接即可完成爬取。

2、使用requests包爬取相关网页图片

requests包最简单的爬虫:

import requests
r = requests.get(url)

之后进一步完成存储工作即可。

三、解决

#从csv读取所有课程号-课序号,并拼接成网页链接
import pandas as pd
csv_data = pd.read_csv('D:/.../999 project/5 testing_file/num.csv', encoding = 'ANSI')
urls = []
for i in csv_data['num']:
    urls.append("http://xxx.cn/os/pic/"+i+".jpg")

import requests
import os

root = "C://...//Desktop//lesson_QR_code/"
num = 0

#爬取课程二维码
for url in urls:
    num = num + 1
    path = root + url.split('/')[-1]
    try:
    	#如果不存在该目录,创建目录
        if not os.path.exists(root):
            os.mkdir(root)
        #如果文件不存在,爬取二维码并保存,若存在则打印“文件已存在”
        if not os.path.exists(path):
            r = requests.get(url)#实际上只有这一行是爬虫
            with open(path, 'wb') as f:
                f.write(r.content)#将二进制内容写入文件
                f.close()
                print(num,"文件保存成功")
        else:
            print(num,"文件已存在")
    except:
    	#如果发生异常,打印发生异常的课程号
        print(url.split('/')[-1])
        
print("爬取完毕")

四、反思

实际上,课程号-课序号信息可以从教务系统手动复制粘贴下来的。博主目前还不会爬虫登录教务系统并解决验证码问题,等解决了这个问题就不用手动复制粘贴啦(如果解决了这个问题就可以用代码抢课了…)。

猜你喜欢

转载自blog.csdn.net/why_not_study/article/details/104592877