python爬取百度贴吧图片

首先需要导入request和re模块,这里要用到正则表达式对所要查找的图片进行匹配。本例是爬取百度贴吧杰森斯坦森的图片。
在这里插入图片描述
打开百度贴吧,输入杰森斯坦森,点开某一个标题后右击鼠标审查元素,查找所要匹配的字符,如下所示:
在这里插入图片描述
这里任何一个<img class……>都对应网页上相应的图片,找到你想爬取的图片,将相应的<img class……>复制下来,当然如果全部复制下来显得太过繁琐,也没有必要,真正需要的是img class的类名,以及字符串scr的内容,至于size、heigtht、width等如果有要求的话可以写在正则表达式中(例如,你就想爬取某一个图片,而不是此网页的所有图片)。
在这里插入图片描述
此时正则表达式就可以写成以上的形式。[^"]匹配除了双引号以外所有字符,既可以出现0次也可以出现1次。这里写成了src"( )"的形式是因为后面要用到findall进行匹配,如果不加括号,findall最后会返回包括前面匹配到的<img class……>的所有内容,然而最后我们只要相应图片的url,否则无法访问你所要查找的图片。如果在正则表达式中有子组,那么findall匹配完了后会返回子组的内容,而不是所有内容。
在这里插入图片描述
这是正则表达式中没有子组的输出结果。
在这里插入图片描述
这是有子组的输出结果。显然上图才是我们想要的!(我所打开的标题网页中只有杰森的五张图片,所以最后会显示五个url)
在这里插入图片描述
这里定义了一个匹配、获取、下载图片的函数,将解码好的网页字符串html作为findall的第二个参数,在其中匹配定义好的正则表达式p。再利用for循环迭代操作本文第五张图所获得的url,分别将它们按/符号分隔开来(调用了split()函数,原型为split(pattern,string,maxsplit=0,flags=0),以出现的pattern模式拆分string字符串),拆分之后获取最后一部分(图片文件名需以.jpg为后缀)。函数urlretrieve(url,filename=None,reporthook=None,data=None)是request模块的,是将由url表示的网络对象复制到本地文件中。编写好程序后执行,命令窗口会什么都不显示,然后打开本地文件就会看到五张杰森的图片爬取成功!
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值