`
Thomas会Coding
  • 浏览: 97542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python 使用htmlParser下载论坛歌曲

 
阅读更多
#encoding='GB2312'
import requests
import os
from HTMLParser import HTMLParser

print '本脚本可以帮助您下载K歌之王中上传的歌曲'+'\n'

bourl = "http://bbs.byr.cn/board/KaraOK"
filepath= 'python/'

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Encoding': 'gzip, deflate, compress',
           'Accept-Language': 'en-us;q=0.5,en;q=0.3',
           'Cache-Control': 'max-age=0',
           'Connection': 'keep-alive',      
           'X-Requested-With': 'XMLHttpRequest',
           'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36' }

if os.path.exists(filepath):
    pass
else:
    os.makedirs(filepath)

print '--------------------------'


class PageParser(HTMLParser):
    def handle_starttag(self,tag,attrs):
        if tag=='a':
           global p_url
           str_temp='在新窗口打开此主题'
           for (key,val)in attrs:
               if key=='href':
                   p_url=val
               if (key=='title')&(val==str_temp):
                   downSong(p_url)
                
                    
class MyParser(HTMLParser):
    def handle_starttag(self,tag,attrs):
        global songHref
        if tag=='a':
            for (key,val)in attrs:
                if key=='href':
                    songHref=val
                    
    def handle_data(self,data):
        global flag
        global songName
        str_find='在新窗口打开'
        if data.find(str_find)>0:   
            flag=True
            songName=data
        else:
            flag=False
           
    def handle_endtag(self, tag):
        global songName
        global flag
      
        if flag&(tag=='a'):
            songName=songName[0:songName.index('(')]
            song =requests.get("http://bbs.byr.cn/"+songHref)
            with open(filepath+songName,'wb') as code:
                code.write(song.content)
            print songName,'downCompleted'
                        
        

def downSong(url):
    songParser=MyParser()
    try:
        songContent=requests.get("http://bbs.byr.cn"+url,headers=headers).content
        songParser.feed(songContent)
    except:
        print '下载错误!!!!!!!!!!!!!!!!'

    


    


p_url=''

flag=False
songName='';
songHref='';
p=80
while p<88:
    global p;
    p=p+1
    temp_url=bourl+"?p="+str(p)
    bbcount =requests.get(temp_url,headers=headers).content
    parser=PageParser()
    parser.feed(bbcount);
    print 'the'+str(p)+'completed------------------------------------------------------------'


 说明几点1:byr论坛采用ajax架构,header写法如上。

2:使用htmlParser解析文档

3:链接提取后,直接写入文件就可以

分享到:
评论

相关推荐

    python之htmlParser入门教程分享.docx

    ### Python之htmlParser入门教程详解 #### 一、HTMLParser模块简介 HTMLParser模块是Python标准库中的一个重要组成部分,主要用于解析HTML文档。该模块提供的`HTMLParser`类可以帮助开发者轻松地解析HTML或XHTML...

    Python中使用HTMLParser解析html实例

    主要介绍了Python中使用HTMLParser解析html实例,本文直接给出使用示例,并总结出HTMLParser含有的方法分为两类,一类是需要显式调用的,而另一类不需显示调用,需要的朋友可以参考下

    C# HTMLParser下载.rar

    在"C# HTMLParser下载.rar"压缩包中,包含了一个名为"HtmlParser2003"的文件,这很可能是该库的一个早期版本。 首先,我们来看一下HTMLParser的基本用法。HTMLParser通常会提供一个解析器类,通过这个类,我们可以...

    Python HTMLParser模块解析html获取url实例

    主要介绍了Python HTMLParser模块解析html获取url实例,HTMLParser是python用来解析html的模块,HTMLParser采用的是一种事件驱动的模式,需要的朋友可以参考下

    python html parser

    本篇将详细介绍Python中的HTMLParser库及其核心概念。 一、HTMLParser库介绍 Python的标准库中包含了一个名为`html.parser`的模块,它提供了对HTML和基本XML的解析功能。这个解析器是基于事件驱动的,这意味着它会...

    HTMLParser 使用举例

    HTMLParser 使用举例 HTMLParser 是一个开源的类库,用于解析 Web 页面。它有两种主要使用方式:extraction 和 transformation。前者用于从网页中萃取出需要的内容,后者用于把 Web 页面中的内容转换为需要的格式。...

    htmlparser1.4完整包下载

    这个“htmlparser1.4完整包下载”提供的是该库的1.4版本,适用于处理和解析HTML内容,尤其是在那些网页结构不规范或者非XML标准的场景下非常有用。 HTMLParser库的设计目标是简单易用且具有灵活性,它允许开发者...

    歌曲链接提取和下载(htmlparser 和http下载)

    本项目聚焦于通过HTMLParser库解析HTML页面,提取特定信息,特别是歌曲链接,并利用HTTP下载这些资源。以下将详细讲解涉及的知识点: 首先,**HTMLParser** 是Python中用于解析HTML文档的内建库。它提供了一个基础...

    Java使用HtmlParser实现简单的网络爬虫

    以下是如何使用HtmlParser实现网络爬虫的关键知识点: 1. **HtmlParser库**:HtmlParser是一个强大的HTML解析器,它能够解析HTML文档,将其转换为一个可操作的节点树,方便开发者通过节点过滤和遍历来获取目标信息...

    HTMLParser.net源代码HTMLParser.net使用demo

    本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...

    HTMLParser 2.0

    此外,HTMLParser库不支持XML解析,如果你需要处理XML文档,应该使用Python的`xml.etree.ElementTree`模块。同时,需要注意的是,HTMLParser默认不处理编码问题,所以在解析前需要确保HTML内容已经被正确地解码。 ...

    HtmlParser

    使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...

    使用htmlparser制作的网页爬虫例题

    使用htmlparser制作的网页爬虫例题

    htmlparser

    META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans....

    c#版htmlparser htmlparser.dll htmlparser源代码

    `htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...

    HTMLParser使用文档和jar包

    本篇将详细阐述HTMLParser的使用方法、功能以及提供的相关资源。 首先,`HTMLParser-2.0-SNAPSHOT-doc.zip`包含了HTMLParser的使用文档。这份文档通常包含API参考、教程、示例代码和用户指南,是学习和理解...

    JAVA htmlparser 使用实例

    ### JAVA HtmlParser 使用实例详解 在Java开发过程中,解析HTML文档是一项常见的需求,尤其是在处理Web爬虫、数据抓取等应用场景时。`HtmlParser`库为开发者提供了一种简便的方式来解析HTML文档,并从中提取所需的...

    使用HTMLParser解析网页,找出文章后下载保存

    本篇文章将深入探讨如何使用HTMLParser库来解析网页,查找文章内容,并将其下载保存。HTMLParser是Python标准库中的一个模块,专门用于解析HTML和XML文档。 首先,我们需要了解HTMLParser的基本用法。HTMLParser是...

    htmlparser使用简单讲解

    以下是一个使用HTMLParser的简单示例,展示了如何从文件或URL读取HTML内容并进行解析: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.FileInputStream; import java....

    Python-pythonxssfilter基于HTMLParser的原生HTML净化器清取所有javascript

    Python-xss-filter的使用不仅限于简单的字符串处理,还可以结合其他Web框架,如Django、Flask等,实现对用户提交的表单数据、评论等内容的自动净化。这样可以确保即使用户输入了包含JavaScript的HTML,服务器也能...

Global site tag (gtag.js) - Google Analytics