一、要获取到网站的源码,需要用到 urllib工具包,先import,调用urllib.request.uriopen(url)就可以打开网页并返回一个对象,调用read()方法即可获得网页的源码:
import urllib.request
url='http://huxi.cqu.edu.cn'
page = urllib.request.urlopen(url)#打开网页并返回一个对象
htmlcode = page.read()#直接获得网页的源代码
print (htmlcode)
pageFile = open ('pageCode.txt','w');
pageFile.write(str(htmlcode));
pageFile.close()
把它写入txt文件中,打开就可以看到网站源码了,和用浏览器邮件查看源码的结果是一样的:
因为我要爬的是网站上的图片,查看网页的源码,找到有图片的代码位置:
会发现有图片的位置的代码都是
<img src="/static/upfiles/201903/temp/20190322170425328_288_214.jpg">
用正则表达式r''来匹配到这些句子,正则表达式的使用详情参考:http://www.runoob.com/regexp/regexp-syntax.html
再使用findall()来搜寻所有满足正则表达式的语句:
import urllib.request
import re
url = 'http://huxi.cqu.edu.cn'
def get_html(url):
page = urllib.request.urlopen(url) # 打开网页并返回一个对象
htmlcode = page.read() # 直接获得网页的源代码
return htmlcode
reg=r'img src="(.+?\.jpg)"'
reg_img = re.compile(reg)#编译一下,运行更快
imglist = reg_img.findall(str(get_html(url)));
for img in imglist:
print(img)
就找到了所有图片的名字链接,输出结果为:
接下来是把这些图片下载下来,进行重命名:
index=0
for img in imglist:
urllib.request.urlretrieve(url+img, '%s.jpg' %index)
index += 1
运行后的结果为:
是不是很简单呢?