weixin_62355089 2022-11-22 18:05 采纳率: 44.4%
浏览 7
已结题

用爬虫通过正则提取到图片的链接地址

问题遇到的现象和发生背景

无法用正则提取到图片链接地址

 ex='<div class="media_bigpic_wrap"><img class="j_retract" id="(.*?)" src="(.*?)" onerror.*?</div>'
提取#<div class="media_bigpic_wrap"><img class="j_retract" id="big_img_1668586480803" src="https://tiebapic.baidu.com/forum/pic/item/0cd7912397dda14415392970f7b7d0a20df486c4.jpg?tbpicau=2022-11-18-05_6b253562deaa086f40d12262ff9c2b7d" onerror="this.src='//tb2.bdstatic.com/tb/static-frs/img/v2/picerr.gif';this.width=82;this.height=75;" style="visibility: visible;"></div>
中的#图片链接地址:https://tiebapic.baidu.com/forum/pic/item/0cd7912397dda14415392970f7b7d0a20df486c4.jpg?tbpicau=2022-11-18-05_6b253562deaa086f40d12262ff9c2b7d

用代码块功能插入代码,请勿粘贴截图
import requests
import re
import os
if __name__ == '__main__':
    if not os.path.exists('./nbaLibs'):
        os.mkdir('./nbaLibs')
    url='https://tieba.baidu.com/f?kw=nba'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.42'
    }
    page_text=requests.get(url=url,headers=headers).text
    ex='<div class="media_bigpic_wrap"><img class="j_retract" id="(.*?)" src="(.*?)" onerror.*?</div>'
    #ex ='(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)'
    img_src_list = re.findall(ex, page_text, re.S)
    print(img_src_list)
#<div class="media_bigpic_wrap"><img class="j_retract" id="big_img_1668586480803" src="https://tiebapic.baidu.com/forum/pic/item/0cd7912397dda14415392970f7b7d0a20df486c4.jpg?tbpicau=2022-11-18-05_6b253562deaa086f40d12262ff9c2b7d" onerror="this.src='//tb2.bdstatic.com/tb/static-frs/img/v2/picerr.gif';this.width=82;this.height=75;" style="visibility: visible;"></div>
#图片链接地址:https://tiebapic.baidu.com/forum/pic/item/0cd7912397dda14415392970f7b7d0a20df486c4.jpg?tbpicau=2022-11-18-05_6b253562deaa086f40d12262ff9c2b7d
    for src in img_src_list:
        img_data=requests.get(url=src,headers=headers).content
        image_name=src.split('/')[-1]
        imaPath='./nbaLibs'/+ image_name
        with open(imaPath,'wb') as fp:
            fp.write(img_data)
            print(image_name,'下载成功!!!!')
运行结果及报错内容

为空列表,并未提取到我想要的图片地址

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-11-22 18:26
    关注
    import requests
    import re
    import os
    if __name__ == '__main__':
        if not os.path.exists('./nbaLibs'):
            os.mkdir('./nbaLibs')
        url='https://tieba.baidu.com/f?kw=nba'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.42'
        }
        page_text=requests.get(url=url,headers=headers).text
        ex='bpic="(.*?)"'##实际大图存储img对象的bpic中,直接获取这个属性值即可
        img_src_list = re.findall(ex, page_text, re.S)
        print(img_src_list)
        for src in img_src_list:
            img_data=requests.get(url=src,headers=headers).content
            image_name=src.split('/')[-1].split('?')[0]##注意带有参数?xxx,需要再次split
            imaPath='./nbaLibs/'+ image_name###这里也有问题,斜杠放引号里面
            with open(imaPath,'wb') as fp:
                fp.write(img_data)
                print(image_name,'下载成功!!!!')
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月6日
  • 已采纳回答 11月28日
  • 修改了问题 11月22日
  • 创建了问题 11月22日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败