2025年3月30日 星期日 甲辰(龙)年 月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

网络爬虫爬取图像初体验

时间:03-29来源:作者:点击数:40

step1

浏览器打开要爬取的网站,右键点击查看页面源代码

step2

找到想要爬取的图像的源地址

代码实现

普通网站爬取没有反爬机制的网站
  • import re
  • import urllib.request
  • #要爬取的网页地址
  • url=r'https://blog.csdn.net/L888666Q/article/details/127208352?spm=1001.2014.3001.5501'
  • with urllib.request.urlopen(url) as fp:
  •     #读取网页内容并解码
  • content=fp.read().decode()
  • #正则表达式定位要爬取的图像,对应上述截图中的 img alt 和 src
  • result=re.findall(r'<img alt.+?src="(.+?)".+?/>',content)
  • #循环获取并保存爬取的图像
  • for index,item in enumerate(result):
  • print(item)
  • with urllib.request.urlopen(item) as fp1:
  • content=fp1.read()
  • with open(str(index)+'.jpg','wb') as fp2:
  • fp2.write(content)
  • print("finish.")
普通网站爬取带有反爬机制的网站

带有反爬机制的网站urlopen时会报403错误

  • import re
  • import urllib.request
  • import urllib.parse
  • url=r'https://blog.csdn.net/L888666Q/article/details/127208352?spm=1001.2014.3001.5501'
  • #设置头 伪装成浏览器(可网上搜索User-Agent大全)
  • headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0'}
  • req = urllib.request.Request(url,headers=headers)
  • with urllib.request.urlopen(req) as fp:
  • content=fp.read().decode()
  • result=re.findall(r'<img alt.+?src="(.+?)".+?/>',content)
  • for index,item in enumerate(result):
  • #if not item.endswith('jpeg'):
  • # continue
  • print(item)
  • item=urllib.parse.urljoin(url,item)#如果图像源地址是相对路径,需要将地址合并为https的地址
  • with urllib.request.urlopen(item) as fp1:
  • content=fp1.read()
  •         #不用index作为图像命名,取最后一个/后面的字符作为保存图片的名字
  • imgname=item[item.rindex('/')+1:]
  • with open(imgname,'wb') as fp2:
  • fp2.write(content)
  • print("finish.")
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门