当前位置:   article > 正文

Python使用正则表达式爬取网站图片信息_运用正则表达式爬取jpg图片并下载

运用正则表达式爬取jpg图片并下载

        使用正则表达式抓取图片信息,一定要了解正则表达的意义。推荐看这位老师的网站(Python正则表达式详解 (超详细,看完必会!)_全 洛的博客-CSDN博客_python正则表达式),学习正则表达式的大部分使用方法了。正则表达式抓取图片信息,最主要是抓取到的网站数据怎么匹配数据值,难点也是怎么用正则方法去匹配数据值。将匹配的值转化为本地存储。

下面介绍几个正则表达式的作业,爬取某浪网站的图片,完全用于技术分享,不用于商业发展。

作业一:

  1. # -*- conding:utf-8 -*-
  2. import requests
  3. import re
  4. #需求:爬取某体育中图片信息
  5. if __name__ == "__main__":
  6. #检查图片地址
  7. url = 'https://n.sinaimg.cn/sports/transform/180/w640h340/20221129/622c-86c9b926b93c22862eee0fc6416d4fde.jpg'
  8. #伪装浏览器
  9. 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 '}
  10. #content返回的是二进制形式的图片数据
  11. #text(字符串),content(二进制)json(对象)
  12. image_data = requests.get(url=url).content
  13. with open('./qutu.jpg','wb') as fp:
  14. fp.write(image_data)
  15. print('get图片结束!')

编译结果:

 作业二:

  1. # -*- conding:utf-8 -*-
  2. import requests
  3. import re
  4. import os
  5. #需求:爬取某体育中图片信息
  6. if __name__ == "__main__":
  7. #判断系统是否存在文件夹,没有文件夹自行创建。
  8. if not os.path.exists('./gitPicture'):
  9. os.mkdir('./gitPicture')
  10. #检查图片地址
  11. url = 'http://sports.sina.com.cn/'
  12. #伪装浏览器
  13. 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 '}
  14. #text(字符串),content(二进制)json(对象)
  15. picture_data = requests.get(url=url,headers=headers).text
  16. #使用聚焦爬虫将页面中所有的新浪图片进行解析/提取,使用正则表达式匹配字符。 .是匹配任意字符,#匹配前面字符出现多次,?匹配前面字符出现一次或者零次
  17. ex = 'height: 236px;">.*?<img src="(.*?)" alt.*? '
  18. #使用正则表达式函数匹配,用re.S进行换行搜索
  19. image_src_list = re.findall(ex,picture_data,re.S)
  20. #使用for循环从列表中抽取每个图片数据,进行命名保存。
  21. for src in image_src_list:
  22. img = src
  23. image_data = requests.get(url=img,headers=headers).content
  24. image_name = img.split('/')[-1]
  25. image_Path = './gitPicture/'+image_name
  26. #本地化存储到对应文件夹中
  27. with open(image_Path,'wb') as fp:
  28. fp.write(image_data)
  29. print(image_name,'下载成功!!!')

编译结果:

作业三:

  1. # -*- conding:utf-8 -*-
  2. import requests
  3. import re
  4. import os
  5. #需求:爬取某体育网站中图片信息
  6. if __name__ == "__main__":
  7. # 伪装浏览器标识符
  8. headers = {
  9. '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 '}
  10. #判断系统是否存在文件夹,没有文件夹自行创建。
  11. if not os.path.exists('./sina_gitPicture'):
  12. os.mkdir('./sina_gitPicture')
  13. #检查图片地址,%d是变量值,
  14. url = 'http://slide.sports.sina.com.cn/g/slide_2_730_282986.html#p=%d'
  15. #p=1,2,3,4,5,6,7---到12对应不同的值,不同的值对应不同的图片信息。
  16. # pic_list=[]
  17. #取一个for循环,旋转每个值抓取不同图片值,但是p=2的url里面已经包涵所有高清值的图片了。
  18. for pageNum in range(2,3):
  19. new_url = format(url%pageNum)
  20. picture_data = requests.get(url=new_url, headers=headers).text
  21. #使用正则表达式定义到爬取下来的文本图片数据的位置,采用字符拼接的方式,利用前面http开头相同的数据值,抓取后面不同值得数据值,后续在用字符串拼接的方式将url拼接回来了
  22. ex = '<dd>.*?http://n.sinaimg.cn/sports/2_img/dfic/a7a65bdb/(.*?)</dd>.*?'
  23. # 使用正则表达式函数匹配,用re.S进行逐行搜索
  24. image_src = re.findall(ex, picture_data, re.S)
  25. #利用for循环在列表中抽取正则表达式抓下来的数据值。
  26. for src in image_src:
  27. #用字符串拼接的方式,组成合格的URL取值。
  28. new_src='http://n.sinaimg.cn/sports/2_img/dfic/a7a65bdb/'+src
  29. #get的方法抓取图片的数据。
  30. image_data = requests.get(url=new_src, headers=headers).content
  31. #利用分隔符split将/后面的数据信息抓取出来命名。
  32. image_name = new_src.split('/')[-1]
  33. image_Path = './sina_gitPicture/' + image_name
  34. # 本地化存储到对应文件夹中
  35. with open(image_Path, 'wb') as fp:
  36. fp.write(image_data)
  37. print(image_name, '下载成功!!!')

        总结:本帖子只用于技术研究和探讨了,不用于商业利益的使用。爬虫是利用浏览器的属性和载荷值进行爬取图片资料,最重要是正则表达式的精准定位到图片的jpg位置,然后用正则表达式进行抓取数据,将抓取的数据加入列表中,在进行For循环本地存储。

技术参考网站:

4.正则解析案例02_哔哩哔哩_bilibili

Python 中使用 join() 函数把列表拼接成一个字符串_宁萌Julie的博客-CSDN博客_python列表拼接成字符串

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/485996
推荐阅读
相关标签
  

闽ICP备14008679号