zoukankan      html  css  js  c++  java
  • python小实例一:简单爬虫

    本文所谓的爬虫就是通过本地远程访问url,然后将url的读成源代码形式,然后对源代码进行解析,获取自己需要的数据,相当于简单数据挖掘。本文实现的是将一个网页的图片爬出保存到本地的过程,例子很简单,用的是python 3.5.2版本,以前的版本可能导入的包的名字不一样,调用的库函数方式有些差别。代码如下:

    #coding =utf-8
    import urllib.request
    import re
    
    def getHtml(url):
    	page = urllib.request.urlopen(url)  ##打开页面
    	html = page.read() ##获取目标页面的源码
    	return html
    
    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) ##解析页面源码获取图片列表
    	#print(imglist)
    	x = 0
    	#length = len(imglist)
    	for i in range(6):  ##取前6张图片保存
    		imgurl = imglist[i]
    		#imgurl = re.sub('"(.*?)"',r'1',imgurl) #取单引号里的双引号内容
    		#print(imgurl)
    		urllib.request.urlretrieve(imgurl,'%s.jpg' % x) ##将图片从远程下载到本地并保存
    		x += 1
    
    global Max_Num
    Max_Num = 1
    ##有时候无法打开目标网页,需要尝试多次,这里设置为1次
    for i in range(Max_Num):
    	try:
    		html = getHtml("view-source:http://www.shangxueba.com/jingyan/2438398.html")
    		getImg(html)
    		break
    	except:
    		if i < Max_Num - 1:
    			continue
    		else:
    			print ('URLError: <urlopen error timed out> All times is failed ')
    

      

  • 相关阅读:
    修复ecshop商品重量BUG小数位增至五位
    ECSHOP 支付宝发货确认接口,记录支付宝返回的交易号
    php数字补零的两种方法
    PHP获取当前时间的毫秒数(yyyyMMddHHmmssSSS)
    ajax 设置Access-Control-Allow-Origin实现跨域访问
    MySQL Master High Available 源码篇
    MHA 报错:There is no alive slave. We can't do failover
    cdid
    mha error
    mysql relay log参数汇总
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8024467.html
Copyright © 2011-2022 走看看