很久之前就想学习爬虫,今天进行第一次尝试,爬取百度贴吧的图片:
第一步:
先学习使用urllib包将网页HTML文件down下来
import urllib.request
url = 'https://tieba.baidu.com/p/5999308366'
page = urllib.request.urlopen(url)
html = page.read() #html文件存放在现在的html里
#写入文件
pagefile = open('./page/tieba.txt','wb)
pagefile.write(html)
pagefile.close()
得到
第二步:
寻找文件中图片的名,写正则表达式过滤出来
从文件中找到 发布到帖子里的图片是src="xxxxx.jpg" size="这样,所以写一个正则表达式(目前需要学习)把图片地址全部存起来 一个个输出(好像百度贴吧都是.jpg)
reg = r'src="(.+?\.jpg)" size'
import re
reg = r'src="(.+?\.jpg)" size'
reg_img = re.compile(reg) #编译一下
imglist = reg_img.findall(url_code) #其中url_code是刚刚获取到的html
i = 1
for img in imglist:
urllib.request.urlretrieve(img, '%s.jpg' %i)
i += 1
加上输入URL 完整代码如下
#coding:utf-8
import urllib.request
import re
#封装爬取网页的方法
def get_html(url):
page = urllib.request.urlopen(url)
html = page.read()
pagefile = open('./page/tieba.txt', 'wb')
pagefile.write(html)
pagefile.close()
return html
#封装爬取图片的方法
def get_image(url_code):
# 匹配图片
reg = r'src="(.+?\.jpg)" size'
reg_img = re.compile(reg)
imglist = reg_img.findall(url_code)
i = 1
for img in imglist:
urllib.request.urlretrieve(img, '%s.jpg' %i)
i += 1
url = input('请输入url:')
if url:
print('url是:' + url)
else:
exit("未输入网址")
url_code = get_html(url).decode('utf-8')
get_image(url_code)