weixin_45217450
盐焗小星球UP
2021-03-28 22:34
采纳率: 100%
浏览 66

python正则表达式—匹配图片地址

python入坑两周小萌新,在跟视频练习时,发现对应的正则方法好像无法使用,但是在CSDN上面参考了几个好像也没发现有什么问题。

但是:results = 【】 ,这是什么原因呢?

请大佬指教:

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • secret5
    liqiang94 2021-03-29 09:54
    已采纳

    正则表达式在不同的网站上不是通用的,我看了下糗事百科那个网址,没有符合你那个正则的文本。你可以具体描述下你要做些什么。

    点赞 1 评论
  • technologist_09
    CSDN专家-HGJ 2021-03-29 11:22

    所写的正则表达式没有匹配项,所以返回空列表。可用

    pat = re.compile(r'<img src="(.*?)"')匹配页面所有图片地址。

    点赞 评论
  • weixin_44385960
    木三136 2021-03-29 09:36

    您使用16 和 18 行的代码也是results=[]吗

    点赞 评论
  • weixin_45217450
    盐焗小星球UP 2021-03-29 17:55
    # 导入相关模块
    import requests
    import re
    import os
    
    # 获取响应信息
    url = 'https://www.qiushibaike.com/imgrank/'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
    }
    suju = requests.get(url=url, headers=headers).text
    #print(suju)
    
    
    # 用正则表达式提取图片地址
    #ex = '<div class="thumb">.*?<img src="(.*?)" alt.*?</div>'
    pat = re.compile('<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>', re.S)
    img_scr = re.findall(pat, suju)
    #pat = re.compile(r'<img src="(.*?)"')
    #results = re.findall(pat, suju)
    
    print(img_scr)

    问题已解决,正则没问题,因为粗心,

    pat = re.compile('<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>', re.S)

    这段代码写成了

    pat = re.compile('<div class="thumb">.*?<img src="(.*?)"alt=.*?</div>', re.S)

    “alt="前面缺少了一个空格,得出结论,规范的代码习惯真的很重要,毕竟越小的问题,越容易被忽略

    点赞 评论

相关推荐