在对爬虫进行了初步学习后,使用urllib模块编写了一个简单的爬虫,可以实现下载百度贴吧中某个帖子中出现的图片
准备工作:
首先,我们随意打开一个帖子,右键一张图片,点击审查元素(目前很多浏览器都自带该功能)
如上图所示,对其中关于图片的代码进行分析,编写正则表达式
我所编写的正则表达式:
img class="BDE_Image" src="https://[^"]*\.jpg"
然后我们可以再查看一下User-Agent,以便于对服务器进行简单的欺骗
代码:
代码比较简单,所以注释可能少了点(小声bb)
import urllib.request
import re
def url_open(url): #该函数用于获取网页内容
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5603.400 QQBrowser/10.1.1775.400') #这里可以修改User-Agent
page = urllib.request.urlopen(req)
html = page.read().decode('utf-8')
return html
def get_jpg(html) : #获取所有的图片地址并存放在数组中
p = r'img class="BDE_Image" src="(https://[^"]*\.jpg)"' #正则表达式,这里多了一对括号,因为findall方法可以只把括号中的内容存入数组中
jpg = re.findall(p,html)
return jpg
def download(jpg) :
for each in jpg :
filename = each.split("/")[-1]
urllib.request.urlretrieve(each,filename,None)
if __name__ == '__main__' :
url = 'https://tieba.baidu.com/p/6024068775' #这里是帖子的地址,把想要扒的网站直接复制过来
html = url_open(url)
jpg = get_jpg(html)
download(jpg)
运行结果:
所有的图片都保存成功啦!(图片保存的位置是代码放置的位置)
想要扒别的帖子只需要修改程序中url的值就可以了。