python爬虫小项目:爬取百度贴吧图片

前一段时间,通过对爬虫的学习,完成了爬取百度贴吧帖子爬取糗事百科段子。看着自己爬取下来的文字,心里也是满满的自豪感!

再次打开贴吧,在浏览时发现贴吧也是包含着大量图片,既然爬取下了贴吧文字,那么为何不将百度贴吧的图片爬取下来呢?

说干就干!(代码为python3.x版


本篇目标

    1.对百度贴吧的任意帖子的图片部分进行抓取

    2.指定是否只抓取楼主发帖内容图片

    3.将抓取到的图片保存到程序目录下

要完成目标,我们先从小方面做起

一.先完成对指定页面图片的爬取

先爬取一个某个页面的图片,链接如下:

http://tieba.baidu.com/p/3223379048?see_lz=1

(1)获取页面代码

import urllib.request
import re

def getPage():
        url='http://tieba.baidu.com/p/3223379048?see_lz=1'
        request=urllib.request.Request(url)       #构建请求的request
        response=urllib.request.urlopen(request)  #利用urlopen获取页面代码
        return response.read().decode('utf-8')    #以utf-8编码对字符串进行解码,获得字符串类型对象
print(getPage())


 

爬取下来的url页面源码过长就不放上来了。

(2)获取页面中想要的图片位置

把鼠标放在谷歌浏览器中想要爬取的内容上,点击右键,选择"检查",打开源码。大家也可以用其他方式查看。

可以写出正则表达式如下:(不明白的可以学习一下正则表达式)

'<img class="BDE_Image".*?src="(.*?)"'

发现存在一些帖子的源码不一样(加了一些前缀什么的),大家可以视情况自行更改正则表达式。

说明:

(1).*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是会尽可能短地做匹配。

(2)(.*?)代表一个分组,是我们需要的内容。

承接上面,代码如下:

def getIMG():
        page=getPage()
        pattern=re.compile('<img class="BDE_Image".*?src="(.*?)"',re.S)
#用于将字符串形式的正则表达式编译为Pattern对象,re.S 标志代表在匹配时为点任意匹配模式
        img=re.findall(pattern,pag       #re.findall可以获取字符串中所有匹配的字符串
        return img
<pre class="python" name="code">print(getIMG())
 

结果举例如下(并非全部匹配结果,结果太长

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值