`
chanshui
  • 浏览: 84605 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用Python进行网页分析实现批量下载

阅读更多
最终版:前几个版本(见本人的以前文章)基本都是用正则表达式实现匹配得到下载链接的,弊端有两方面:1。由于所 分析的网页很有规律,所以正则表达式实现起来过于繁琐,肯定不合适 2。各个任务之间都不不同,每次都重新编码,实现起来毫无规律,没有扩展性。所以此篇文章为这个专题的最终版,以后还有更多东西要学习,就不要在着方面纠缠了。

可执行版本:这次终于可以出一个自己比较满意的可执行版本,所以贴出源代码,作为这段工作的总结。相关的其他资源的获取,都可以由以下代码扩展之,而且相当简单,所以不再提供

运行要求:必须先下载和安装python-2.4.2.msi ,配置好Python环境;单击start.bat即可实现批量下载

源代码: 本工程只包括两个文件start.bat 和CustomParser.py:

start.bat

       //make the dir for files and run the project

        mkdir files
         python CustomParser.py

CustomParser.py

from sgmllib import SGMLParser
from string import find, replace, rjust
from threading import Thread
import urllib

__author__ = "Chen Peng (peng.ch@hotmail.com)"
__version__ = "$Revision: 1.0 $"
__date__ = "$Date: 2006/03/03 $"
__copyright__ = "Copyright (c) 2006 Chen Peng"
__license__ = "Python"

__all__ = ["Gif_163_Parser"]

class PDownloadThread( Thread ):
    """
    Download the files in the dict and save them to local files with the given name
    """
    def __init__( self, DictList,i ):
        Thread.__init__( self )
        self.DictList=DictList
        self.pageno=str(i);
  
    def run( self ):    
        for k in self.DictList.keys():
            try:
              print 'Download'+self.DictList[k]+'......'
              uFile=urllib.urlretrieve( self.DictList[k], '.files'+k+'.'+self.DictList[k].split('.')[self.DictList[k].split('.').__len__()-1])
            except :
               logfile = open('error.log', 'a')
               logfile.write(self.pageno+' '+self.DictList[k]+'   '+k+'n')
               logfile.close() 
            print 'Save to file '+k       

class Gif_163_Parser( SGMLParser ):
   """
    任务:下载163彩图
    原理:http://mms.163.com/new_web/cm_lv2_pic.jsp?catID=&ord=dDate&page=2&type=1&key=
        从1到415页(共6637)分析得到如下路径:“/fgwx/hhsj/1_060302175613_186/128x128.gif”
   eg:<script>showPic('22930','1','/fgwx/hhsj/1_060302175613_186/128x128.gif','1','编号:22930n名字: 因为有你n人气:100');</script>     
   下载路径:http://mmsimg.163.com/new_web/loaditem.jsp/type=1/path=/fgwx/llfj/1_060302175612_995/176x176.gif
   """
   def reset( self ):                             
        SGMLParser.reset( self )
        self.headURL='http://mmsimg.163.com/new_web/loaditem.jsp/type=1/path='
        self.SubURL = []
        self.Links = {}
         
   def start_script( self, attrs ):
        #self.SubURL.extend( [' %s="%s"' % ( key, value ) for key, value in attrs] )
        pass

   def end_script( self ):
        pass
  
   def handle_data( self, text ):
        if find( text, 'showPic' )!=-1:
           self.Links[replace( text.split( 'n' )[1], 'xc3xfbxd7xd6: ', '' )]=self.headURL+replace ( text.split( ',' )[2], ''', '' );
           
   def Execute( self ):  
       for i in range( 1, 415 ):
           self.Links.clear;
           try:
               usock = urllib.urlopen( "http://mms.163.com/new_web/cm_lv2_pic.jsp?catID=&ord=dDate&page="+str(i)+"&type=1&key=" )
               self.feed( usock.read() )
               usock.close()                    
               TestThread=PDownloadThread( self.Links ,i)
               TestThread.start()                
               self.close()    
           except IOError:
               pass   
        #print ( ["%s=%sn"% ( k, self.Links[k] ) for k in self.Links.keys()] )
        #print self.Links

if __name__ == '__main__':
    #Gif_163_Parser().Execute();
     testtask=Gif_163_Parser()
     testtask.Execute() 
分享到:
评论

相关推荐

    python爬虫项目——自动批量抓取m3u8网页视频

    此外,为了实现批量抓取,我们可以编写一个函数,接收一个包含多个视频链接的列表,遍历列表并逐一执行上述步骤。这将使我们的脚本更加通用和灵活。 总的来说,这个Python爬虫项目展示了如何结合网络请求、HTML解析...

    批量下载快手视频的脚本 Python+操作教程.zip

    例如,使用`requests.get()`获取网页内容,然后用解析库找到视频的真实下载地址。 "使用教程.txt"将指导用户完成以下步骤: 1. **环境准备**:确保已安装Python,以及可能需要用到的第三方库(如`requests`,`...

    使用Python and shell 批量下载哨兵一号(sentinel-1)的精密轨道数据

    使用`wget`命令,结合Python生成的下载链接,可以实现批量下载: ```bash #!/bin/bash for product in "${products[@]}" do wget --no-check-certificate -O "$product.SAFE" ...

    python 自动批量打开网页的示例

    对于需要频繁访问多个网址的场景(如市场调研、竞品分析等),使用Python脚本进行网页的批量打开可以极大地提升效率。下面,我们将详细探讨如何使用Python实现这一功能,并深入理解代码背后的逻辑和技术细节。 ####...

    python批量下载百度图片

    在Python编程领域,批量下载网络资源是一项常见的任务,特别是在数据抓取和分析中。本教程将专注于使用Python来批量下载百度图片,这是一个实用且有趣的技能,尤其对于那些需要大量图片数据的人来说。我们将深入探讨...

    python开发网页应用批量提取导出核酸结果

    在Python编程领域,开发网页应用批量提取导出核酸结果是一个典型的任务,这涉及到网络爬虫技术、数据分析以及用户界面设计。下面将详细讲解这个过程涉及的知识点。 首先,我们需要了解Python作为开发语言的优势。...

    python批量生成二维码工具

    在本文中,我们将深入探讨Python如何实现这一功能,并分享如何使用这个自定义工具来提高工作效率。 首先,我们需要了解二维码(Quick Response Code)的基本原理。二维码是一种二维条形码,能够存储大量的信息,如...

    Python网页数据抓取以及表格的制作

    本主题将深入探讨如何使用Python进行网页数据抓取,并介绍如何利用这些数据创建表格,同时涉及CSS文件的生成和字体的修改。 首先,网页数据抓取是通过Python中的库如BeautifulSoup或Scrapy来实现的。BeautifulSoup...

    源码_python登录_python_QQ批量登录_账号登录_批量登录_

    在Python编程领域,批量登录是一项常见的任务,尤其在自动化测试、数据分析或者运维场景下。本项目专注于使用Python实现QQ账号的批量登录功能,这涉及到网络请求、数据加密、模拟登录等多个知识点。 首先,我们需要...

    python网络爬虫爬取整个网页

    了解并掌握以上知识点,你就能编写出基本的Python网络爬虫,实现对整个网页内容的爬取。而随着经验的增长和技能的提升,你可以进一步处理更复杂的需求,如动态加载页面、JavaScript渲染等。在实践中不断学习和探索,...

    网页图片批量下载源码

    网页图片批量下载源码是一种非常实用的工具,尤其对于网页设计师、数据收集者或网络爬虫开发者来说。这个源码的目的是通过自动化的方式从指定网页上抓取所有的图片资源,节省手动下载的时间和精力。接下来,我们将...

    Python百度好看视频批量下载

    根据给定的信息,本文将详细...综上所述,“Python百度好看视频批量下载”项目通过整合Selenium、BeautifulSoup和requests等工具实现了自动化批量下载的功能。但在实际应用时还需注意版权合规性和代码健壮性等问题。

    python实战-用Python批量往Word文档中指定位置添加图片.zip

    你将学会如何抓取网页数据、分析数据、构建机器学习模型,以及开发实用的Web应用等。每个案例都配备了详细的步骤和代码解释,让你在实战中不断成长,逐步掌握Python编程的精髓。 不仅如此,这份资源还注重培养你的...

    Python爬虫下载MP3文件

    - **批量下载**:如果一个网页包含多个MP3,可以遍历所有链接,实现批量下载。 - **速度控制**:为了避免对服务器造成过大压力,可以设置下载延时或使用异步请求库如asyncio和aiohttp。 - **版权问题**:注意遵守...

    python实现批量下载新浪博客的方法

    本文将详细介绍如何使用Python来实现批量下载新浪博客的文章,并深入探讨其中涉及到的关键技术点,如页面抓取、正则表达式、BeautifulSoup库的使用等。 #### 一、项目背景与目标 随着网络信息的爆炸性增长,从网页...

    基于Python实现批量压缩图片

    本文将深入探讨如何使用Python来实现批量压缩图片,这是一个非常实用的技能,特别是在处理大量图像数据时,如网页开发、数据分析或者存储优化等场景。 首先,我们需要了解Python中的两个核心库:PIL(Python ...

    python实战-Python批量将公号文章保留原格式下载为PDF.zip

    你将学会如何抓取网页数据、分析数据、构建机器学习模型,以及开发实用的Web应用等。每个案例都配备了详细的步骤和代码解释,让你在实战中不断成长,逐步掌握Python编程的精髓。 不仅如此,这份资源还注重培养你的...

    python实战-Python指挥打印机批量打印文件.zip

    你将学会如何抓取网页数据、分析数据、构建机器学习模型,以及开发实用的Web应用等。每个案例都配备了详细的步骤和代码解释,让你在实战中不断成长,逐步掌握Python编程的精髓。 不仅如此,这份资源还注重培养你的...

    Python微博爬虫,批量获取指定账号数据

    - 遵守微博的使用协议,不要进行大规模、高频的抓取,以免被封号。 - 定期更新爬虫,因为微博可能会继续调整其网页结构或接口。 - 考虑到微博的反爬策略,可能需要定期更换User-Agent,添加随机延迟以模拟人类浏览...

    使用python做的批量下载超10000张图片的软件和源码

    标题中的“使用Python做的批量下载超10000张图片的软件和源码”揭示了这个项目的核心:一个利用Python编程语言实现的图片下载工具,它可以处理大规模的图片下载任务,最多可达一万张。这样的工具对于需要大量图片...

Global site tag (gtag.js) - Google Analytics