urllib库实现:从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据。
urllib模块urlopen()函数:urlopen(url, data=None, proxies=None)
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
参数url表示远程数据的路径,一般是网址。
参数data表示以post方式提交到url的数据(提交数据的两种方式:post与get)。
参数proxies用于设置代理。
urlopen返回 一个类文件对象(fd),它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样。
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息(header)。
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到。
geturl():返回请求的url。
代码示例
import urllib2
doc=urllib2.urlopen("http://www.baidu.com")
print doc.geturl()
print doc.info()
print doc.readline(20)
将具体图片从远程下载到本地并保存
import urllib
url = "http://www.xiaohuar.com/d/file/20170318/a5e3460ff46d07.jpg"
urllib.urlretrieve(url,'123.jpg')
简单实用的完整代码示例:将某个页面所有符合条件的图片下载到本机
#coding =utf-8
import urllib
import urllib2
import re
def getHtml(url):
page = urllib2.urlopen(url) ##打开页面
htmla = page.read() ##获取目标页面的源码
return htmla
def getImg(html):
reg = 'src="(.+?\.png)"' ##正则表达式筛选目标图片格式,有些是'data-original="(.+?\.jpg)"'
img = re.compile(reg)
#html = html.decode('utf-8') ##编码方式为utf-8
imglist = re.findall(img, html) ##解析页面源码获取图片列表
for i in range(len(imglist)):
imgurl = imglist[i]
imgurl="http:"+imgurl
urllib.urlretrieve(imgurl,'%s.jpg'% (i+1)) ##将图片从远程下载到本地并保存
def main():
html = getHtml("https://www.shangxueba.com/sitemap/sitemap.htm")
getImg(html)
print 'End!'
main()
注意:
html = getHtml("https://www.baidu.com")获取不到图片src
html = getHtml("http://www.baidu.com")可以获取图片src
可以用print html查看结果,比较不同。
学习参考: