用python获取数学竞赛题目

马上全国大学生数学竞赛就要开始,这种比赛肯定是要做题的,但题目很多都只能在线看,感觉还是纸质的好些,但好多都不能单击右键保存图片(保存下来的也是一个网页形式),如果了解过前端知识的话,就可以按f12打开控制台来找对应图片的url然后在一张一张的下载,但题目从09-现在有七八十张图爿一张一张下有点麻烦,所以就想用python写一个脚本来实现自动的下载图片,并保存在一个目录中,下面废话不多说,贴出我的代码:

这里需要说明:在你爬取之前,你需要分析一下你要爬取的图片html:

第一个代码在你的目录下会出现11.html文件,然后你就可以分析html <img的组成

import urllib.request,re, os
def imageCrawler(url, toPath):
    headers = {
        "User-Agent": "Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)",
    }
    req = urllib.request.Request(url, headers=headers)#先构造一个请求体
    response = urllib.request.urlopen(req)#打开一个网页
    htmlStr = response.read()
    print(htmlStr)
    with open(r'11.html', 'wb') as f:
        f.write(htmlStr)

url = 'https://mp.weixin.qq.com/s/p7vdIKfwHNPYZYcOIvfKzQ'#目标网址
toPath = r'E:\math context'#存储的位置
imageCrawler(url, toPath)
下面是获取图片的代码

import urllib.request,re, os
def imageCrawler(url, toPath):
    headers = {
        "User-Agent": "Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.0;Trident/4.0)",
    }
    req = urllib.request.Request(url, headers=headers)#先构造一个请求体
    response = urllib.request.urlopen(req)#打开一个网页
    htmlStr = response.read().decode('utf-8')#这里注意从网页返回的是byte型需要将其转化为str所以要解码
    #下面是我找的网站的正则匹配
    #pat = r'<img data-ratio=".*?" data-w="550" data-type="png" data-s="300,640" data-src="(.*?)"  />'
    pat = r'<img data-s="300,640" data-type="png" data-src="(.*?)" data-copyright="0" class="" data-ratio=".*?" data-w=".*?"  />'
    #pat = r'<img data-ratio=".*?" data-w="550" data-type="png" data-s="300,640" data-src="(.*?)"  />'
    #pat = r'<img data-s="300,640" data-type="png" data-src="(.*?)" style="" data-ratio=".*?" data-w="550"  />'
    #pat = r'<img data-s="300,640" data-type="png" data-src="(.*?)" style="" data-ratio="1.4153005464480874" data-w="549"  />'
    re_image = re.compile(pat)
    imagesList = re_image.findall(htmlStr)
    print(imagesList)
    print(len(imagesList))#这可以判断下载几个图片
    num = 1
    for imageUrl in imagesList:
        path = os.path.join(toPath, str(num) + ".jpg")#构造文件路径
        num += 1
        urllib.request.urlretrieve(imageUrl, filename=path)#打开网址并下载


url = 'https://mp.weixin.qq.com/s/p7vdIKfwHNPYZYcOIvfKzQ'#目标网址
toPath = r'E:\math context'#存储的位置
imageCrawler(url, toPath)


这样就说明你成功了


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值