zoukankan      html  css  js  c++  java
  • python实现简单爬虫功能

     1 #首先我们可以先获取要下载图片的整个页面信息
     2 #coding=utf-8
     3 #Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据
     4 import urllib
     5 import re
     6 #首先,我们定义了一个getHtml()函数:
     7 def getHtml(url):
     8 #urllib.urlopen()方法用于打开一个URL地址
     9     page = urllib.urlopen(url)
    10 #read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。
    11     html = page.read()
    12     return html
    13 
    14 #创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接
    15 def getImg(html):
    16 #采用正则表达式取出页面中图片的url
    17     reg = r'src="(.+?.jpg)" pic_ext'
    18 #re.compile() 可以把正则表达式编译成一个正则表达式对象
    19     imgre = re.compile(reg)
    20 #re.findall() 方法读取html 中包含 imgre(正则表达式)的数据
    21     imglist = re.findall(imgre,html)
    22 #通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1
    23     x = 0
    24     for imgurl in imglist:
    25 #urllib.urlretrieve()方法,直接将远程数据下载到本地
    26         urllib.urlretrieve(imgurl,'%s.jpg' % x)
    27         x+=1
    28 #我们要爬的网址,对每个网址其图片存放方式可能不一样,所以需要不同的正则表达式
    29 html = getHtml("http://tieba.baidu.com/p/2460150866")
    30 print getImg(html)
    31   
    32 http://www.cnblogs.com/fnng/p/3576154.html#top

     update:

    如果想将其下载在你指定的file中,只需要修改 

    urllib.urlretrieve(imgurl,'%s.jpg' % x)

    即可,
    urlretrieve(url,path)
    将path修改成你想要的,如我想放在 F:pic
    则修改为
    urllib.urlretrieve(imgurl,'f:/pic/%s.jpg' % x)
    就可以了~~

    update by 2015.1.27:
    实现下载多个页面的图片,以下载煎蛋妹子图(不要问我为什么~~)为例:
    先贴上代码
     1 #coding=utf-8
     2 import urllib
     3 import re
     4 import os
     5 
     6 urlList = 'http://jandan.net/ooxx/page-%s' 
     7 global x
     8 x=0
     9    
    10 def getHtml(url):
    11     page = urllib.urlopen(url)
    12     html = page.read()
    13     return html
    14 
    15 def getImg(html):
    16     reg = r'src="(.*?.jpg)" '
    17     imgre = re.compile(reg)
    18     imglist = re.findall(imgre,html)
    19     global x
    20     for imgurl in imglist:
    21         urllib.urlretrieve(imgurl,'f:/pic/%s.jpg' % x)
    22         x+=1
    23 
    24 
    25 for i in range(1315, 1317):
    26     
    27     i=urlList % (i)
    28     html=getHtml(i)
    29     print getImg(html)

    这段代码与上面相比就是增加了一个全局变量,用以实现命名时不覆盖,然后对于其每一页的URL进行分析得到的一个共性,

    用  ‘http://jandan.net/ooxx/page-%s’ 及一个for循环来下载你指定的页面。

  • 相关阅读:
    均匀分布的随机数
    第三十四章 软件工艺的话题
    第三十三章 个人性格
    MySQL常用命令(三)---最值的搜索
    lnmp环境运行laravel open_basedir restriction in effect 问题
    Host 'XXX' is not allowed to connect to this MySQL server解决方案
    CentOS 7中设置PHP7的Log文件日志
    如何查看Laravel版本号的三种方法
    CentOS 7下安装Composer + Laravel
    LNMP一键安装包
  • 原文地址:https://www.cnblogs.com/xlchen/p/4251329.html
Copyright © 2011-2022 走看看