Python SGMLParser 的1个BUG??

首先说一下,我用的是python 2.7,刚好在学Python,今天想去爬点图片当壁纸,但是当我用 SGMLParser 做 <img> 标签解析的时候,发现我想要的那部分根本没获取到,我尝试用 lxml 修复网页,还是解析不出..但是当我把此部分字段单独提出来时,我却可以将此部分标签解析出来,实在无法解决这个问题...先将问题放在这里,用正则表达式去匹配好了..如果有遇到过此问题的前辈请务必告诉我..我的邮箱是 [email protected]

这是源网站:http://mcyacg.com/m60948/

<div class="quote"><blockquote><font size="5"><font color="Pink">P站引言:</font></font>正好可以放在手心里的红色果实——“苹果”。红色果实切开后看起来像心形的苹果,在白雪公主、亚当与夏娃等故事中都是作为诱惑的象征登场。艳丽的红色外皮包裹着香甜多汁的清脆果实,或许有着一种不可思议的魅力吧。<br/>
今天,就为大家送上描绘了“苹果”的插画作品特辑。敬请欣赏这些仿佛能听见咬下新鲜苹果时的清脆声音的插画作品。</blockquote></div><br/>
<a href="http://pan.baidu.com/s/1mhJ4ti4" target="_blank"><font size="5">下载</font></a><br/>
<img id="aimg_IPKD8" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/08859a09d120090cfff30152010130c7.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_Sv2k2" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/db3a060b649a422a701dd47982f9cbe5.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_Ob8zD" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/8fd5b9b5f4706b17e71c00939c75f648.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_MWOuz" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i2.qlshw.org/7b5f4a94fff33ea1a7cac45131f2ba41.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_nG9jr" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/4c0a17365342ef700c68c4e4caada0e0.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_J790D" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i2.qlshw.org/a1f2a3486ce679f007abea46782a33b7.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_v6mTz" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/8d37e5d40f34c03180080135e8757bc8.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_wzFQq" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i2.qlshw.org/7feed5d205b6811d5d1366dd495a0760.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_xWlS5" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i2.qlshw.org/413f8d116e31174451032abfa72c1246.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_O8T03" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/f654b77544edfeee9cda4d069e704c90.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_PfGhH" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i2.qlshw.org/e6fb8b6eafd5ef5dea2a13a284ba8309.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_tZEBu" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/46d344876774e7dcb059ef84e2fc70f7.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_PnP6y" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i1.qlshw.org/9c6ab03cffb678a0945dcb0da127ea63.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_H01fi" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i1.qlshw.org/d0bf9d03f427a730b40a29bfebc9697a.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_j1pqX" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/36074139da9039d1d4c0d1042f6b1b8c.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_xaHP0" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/a40f503868cdd657531cbea34adf55e6.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_wE44O" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i1.qlshw.org/0a5d24a51f5c4ad0041d8feec5b5fe9a.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_T50cd" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/b9f666b571221894bd4d922d369fce5d.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_C4o7y" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i4.qlshw.org/114b3eff9da458cfbfb52d08160fd30a.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<img id="aimg_m2c3s" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" file="http://i3.qlshw.org/ba3265f867650ef35891f6cb09a7a196.jpg" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt=""/><br/>
<br/>

这部分是我想要提取的元素.

from sgmllib import SGMLParser
class LableParse(SGMLParser):
    def reset(self):
        SGMLParser.reset(self)
        self.level = 0
        self.flag = False
        self.picturesrc=[]
    def start_div(self,attrs):
        if self.flag == True: #遇到子层 level+1
            self.level+=1
        for k,v in attrs:
            if k==‘class‘ and v==‘pct‘:
                self.flag = True
                self.level+=1 #自己加一层

    def end_div(self):
        if self.level == 0:
            self.flag = False
        if self.flag == True: #退出DIV子层的时候level-1
            self.level-=1
    def start_img(self,attrs):
        #if self.flag == True:
            for k,v in attrs:
                print ‘{%s : %s}‘%(k,v)

if __name__ == ‘__main__‘:
    lp = LableParse()
    lp.feed(open(‘source.txt‘).read())

这部分是我继承自 SGMLParser 的一个类..

时间: 2024-10-13 12:43:54

Python SGMLParser 的1个BUG??的相关文章

python for android : BeautifulSoup 有 bug

BeautifulSoup 善于网页数据分析 ,但是 python for android : BeautifulSoup 有 bug , text = h4.a.text 只能取得 None,所以我写了function: getText() 来fix this bug. 例如: 抓取CSDN极客头条内容  soup.py import urllib2, re from BeautifulSoup import BeautifulSoup import sys reload(sys) sys.s

python中的Non-ASCII character bug以及pycharm代码区突然不能编辑问题

1:pycharm代码区突然不能编辑问题 解决办法: (1)如果pycharm用的是免费试用版可能出现这种情况的原因是试用结束啦!重新下载继续使用或者购买,下载免费版都可以解决这个问题 (2)排除(1)的问题那就是软件本身在你打开的时候出现了错误!关闭以后重新开启就可以顺利解决该问题 2:python再写代码过程中当用到中文注释时候会出现Non-ASCII character  bug 控制面板中代码提示是这样的:SyntaxError: Non-ASCII character '\xe6' i

从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表,利用xlsxwriter

#__author__ = 'xu.duan' # -*- coding: utf-8 -*- ####################################################################### # import xlsxwriter,time,datetime from redmine import Redmine from functools import reduce import sys import os import os.path imp

Python 文件操作之读写错误

错误还原: 读错误 在对文件进行读操作过程中,试图将txt文件中的数据按照4个字节的大小(1点)依次读出并进行数据处理 ,可读到ae99 1a41时,数据不再连续,1a无法读出,百思不得其解,各种尝试后仍然一筹莫展,一度怀疑python对于文件操作存在bug. 代码如下: uartfile = open('addata0.txt','r') data = uartfile.read(4) 写错误 对文件写操作时,产生同样错误,再遇到0a0d时无法连续写入. 基础知识: 文件的读写操作存在两种模式

python urllib模块

1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google 1 #coding:UTF8 2 3 import urllib 4 response = urllib.urlopen("http://www.baidu.com") 5 f = response.readline() #读取html第一行 6 print f 代码 返回结果 <!DOCTYPE html

Effective Python 条目一:知道你现在用的Python是哪个版本

条目一:知道你现在用的Python是哪个版本 在这本书里,主要实例的代码是Python3.4(发布于2014年3月17日)的语法.这本书也提供一些Python2.7(发布于2010年七月3日)语法的例子去强调不同之处.我的大部分建议都可应用到流行的Python运行时库:CPython, Jython, IronPython, PyPy, etc. 很多计算机预装了多个版本的标准CPython运行时库.然而,命令行中默认的python并不清晰.python通常是python2.7的别名,但是有时候

Python源码安装

python2.7.12和python3.5.2安装指导 系统centos6.5 下载地址: https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz h或者 https://python.org/ftp/python/3.5.2/Python-3.5.2.tgz 需要的包: yum install openssl openssl-devel gdbm gdbm-devel gcc gcc-c++ bzip2 bzip2-devel lzm

Python 生成账号密码算法

有个需求,需要伪造跟用户行为非常类似的账号密码,而且需要一个阀值控制伪造的数量. 在这需求上,还有一个就是需要控制生成的比率.跳出率不能过高或者太低. 对此就随手用python写了一个,bug不知道有木有,没有测,具体有兴趣可以去改改. #coding:utf-8 import random class create_data: global zimu_xx,zimu_dx,number,teshu # 生成26个英文字母,大小写 zimu_xx=[chr(i) for i in range(9

python无限遍历,实现在多维嵌套字典、列表、元组的JSON中获取数据

接口返回json数据中可能嵌套列表,列表内又嵌套字典的情况, 接口自动化过程中需要通过一个key值直接获取到对应的value,所以有了下面的函数 不多说,上代码: #! /usr/bin/python # coding:utf-8 """ @author:Bingo.he @file: get_target_value.py @time: 2017/12/22 """ def get_target_value(key, dic, tmp_list