coding_2561 2022-01-19 00:07 采纳率: 50%
浏览 56
已结题

利用python的正则表达式从超链接取数

在爬图片网站的图片,要把"src="后面的链接取出来,但是一直取出来是空的,不知道正则表达式哪里有错!

要爬取的链接:

璀璨耀眼的星空风景图片

想要得到的结果:
//img.ivsky.com/img/tupian/li/202107/15/xingkong-005.jpg

目前的正则写法:

ex = '

.*?<img src="(.*?)" alt.*?
'
img_src_list = re.findall(ex,page_text,re.S)

完整的代码:

import requests
import re
import os
if __name__ == "__main__":
    if not os.path.exists('./otherLibs'):
        os.mkdir('./otherLibs')
    url = 'https://www.ivsky.com/tupian/ziranfengguang/'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0'
    }
    page_text = requests.get(url=url,headers=headers).text
    ex = '<div class="il_img">.*?<img src="(.*?)" alt.*?</div>'
    img_src_list = re.findall(ex,page_text,re.S)
    for src in img_src_list:
        src = 'https:'+src
        iamge_data = requests.get(url=url,headers=headers).content
        img_name = src.split('/')[-1]
        img_Path= './otherLibs'+img_name
        with open(img_Path,'wb') as fp:
            fp.write(iamge_data)
            print(img_name,'下载成功')


  • 写回答

3条回答 默认 最新

  • 一枚回归少年 2022-01-19 12:00
    关注

    望被采纳

    import os
    import re
    import requests
    if __name__ == "__main__":
        if not os.path.exists('./otherLibs'):
            os.mkdir('./otherLibs')
        url = 'https://www.ivsky.com/tupian/ziranfengguang/'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
            'cookie': 't = 15dc3f49950b911ad395e4d2b5f21bd0;r = 9777;Hm_lvt_a0c29956538209f8d51a5eede55c74f9 = 1642561701;'
                      'Hm_lpvt_c13cf8e9faf62071ac13fd4eafaf1acf = 1642561835;Hm_lpvt_a0c29956538209f8d51a5eede55c74f9 = 1642561836'
        }
        # 必须要加cookie  ,可以在浏览器登录后获取,或这接口请求再提取cookie
        page_text = requests.get(url=url, headers=headers).text
        ex = '<img src="(.*?)" alt="(.*?)">'  
        img_src_list = re.findall(ex,page_text)  #找出src 和alt  返回元组
    
        for src in img_src_list:
            url = 'https:' + src[0]   #拼接图片地址
            alt=src[1]                #获取alt 标题
            if not os.path.exists('./otherLibs/{}'.format(alt)):
                os.mkdir('./otherLibs/{}'.format(alt))    #创建以标题为名的文件夹
            with open("./otherLibs/{}/{}.txt".format(alt,alt), 'w+') as fp:     #打开或创建以标题为名的 文件
                fp.write(alt+"-->"+url)     #向文件中写入src
                print(alt, '下载成功')
    

    生成的文件和下载地址

    img

    望被采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月13日
  • 已采纳回答 2月5日
  • 创建了问题 1月19日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?