#!/usr/bin/python
“”“
本程序是爬虫示例,从百度网页上下载相应的图片
”“”
import os
import re
from urllib import request #从urllib包中导入request模块,针对python3
import chardet #导入chardet模块进行检测编码类型
“”“
getHtml函数主要是为了获取网页的源代码,然后从中提取图片的网址,再进行下载!
”“”
def getHtml(url):
page = request.urlopen(url)
html = page.read()
#自动检测网页编码格式,然后以相应的编码格式解码出来,如果没有检测到,则使用默认的设置格式
ct = chardet.detect(html)
return html.decode(ct.get("encoding","utf-8"))
“”“
getImage函数主要是利用正则表达式从得到的网页源代码中提取图片的网址,然后进行下载相应的图片
”“”
def getImage(html):
“”“
"thumbURL":" 是相应的字符
()表示分组,匹配成功之后返回的是分组信息,只返回()内部的信息,.*?表示任何字符任何数量,用最小匹配原则
这个是整个程序中最为重要的部分
”“”
reg = r'"thumbURL":"(https.*?.jpg)"'
imgre = re.compile(reg) #构造完毕正则表达式之后,再进行编译处理,加快处理速度
imglist = re.findall(imgre,html)
x = 0
for imgurl in imglist:
request.urlretrieve(imgurl,"C:/Users/jorh/Desktop/python-execise/data/%d.jpg"%x) #将提取出的图片网址进行下载
print("x = %d"%x)
x += 1
return imglist
html = getHtml("https://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%D7%C0%C3%E6&fr=ala&ala=1&alatpl=adress&pos=0&hs=2&xthttps=111111")
fo = open('C:/Users/jorh/Desktop/python-execise/data/test.txt','w',encoding = "utf - 8") #创建一个文本文件,用于保存网页源码信息
#print(fo.name)
fo.write(html)
fo.close()
path = os.path.dirname('test.txt')
print(getImage(html)) #打印匹配成功的字符串信息