作者mirror012020 (小B)
看板Python
标题[问题] 关於htmlparser的tag
时间Tue Sep 14 23:43:40 2010
请问一下,关於tag的问题
我抓同一个网页的资料,有些资料一直抓不出来
後来我查attrs发现,只要走到下面这段程式码的第三行,就会中断
print attrs
会到[('style', 'height:1.2em;overflow:hidden;word-break:break-all;')]
就停止
<div class="Prod_Desc">
<span class="RedName">
<div style="height:1.2em;overflow:hidden;word-break:break-all;"><a href="/gdsale/gdsale.asp?gdid=2331049 "style="color: #FF0000;">大全配新机~送4G+充电池组+原包...<br></a></div></span>
---
我想抓的是tag=a name=href下的value (也就是/gdsale/gdsale.asp?gdid=XXX)
我想请问该怎麽解决~"~
我的程式码如下:
class parseLinks2(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.myinput=[]
def handle_starttag(self, tag, attrs):
if tag=='a':
for name,value in attrs:
if name=='href':
self.myinput.append(value)
---
请知道的帮个忙,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.172.216.17
※ 编辑: mirror012020 来自: 218.172.216.17 (09/15 00:24)
1F:推 kaichan:先用 re 把 style 除掉? 我想不到方法的时候会这样做 09/15 00:36
请问要怎麽把style除掉呢?
我的想法是 re.search('style',attrs)
如果 is None 才执行,不然就不执行
可是 re.search('style',attrs)
一直错误,好像是因为attrs是清单,但是我不知道如何取出他>"<
2F:推 seedman:看来就是内建的htmlparser容错比较弱 你可以用lxml 09/15 00:52
3F:→ seedman:不然手动re <a[^>]+href="(.+?)"[^>]+> group(1)取出 09/15 00:59
请问~ 手动 re 是这样写吗?
aa = re.match('<a[^>]+href="(.+?)"[^>]+>',scontent2)
aa.group(1)
可是一直出现错误讯息@@"
我还是搞不懂手动re的意思,是就不用进去htmlparser里面了吗?
只要把网页读出来?!
※ 编辑: mirror012020 来自: 218.172.216.17 (09/15 02:21)
4F:推 seedman:就是把网页当字串来找 发现用re.findall的话连group都不用 09/15 07:48
5F:→ seedman:你的错误讯息是甚麽 09/15 07:49
用上面那个写法,错误讯息是AttributeError
'NoneType' object has no attribute 'group'
我用了re.findall有成功叫出来,但是有些也会失误@@"~
我请想问一下 <a[^>]+href="(.+?)"[^>]+> 的 "(.+?)"是什麽意思呢?
※ 编辑: mirror012020 来自: 218.172.216.111 (09/15 17:05)
7F:→ seedman:.任意字元 +?一个以上越短越好 ()把这段群组起来 09/15 18:28
8F:→ seedman:会NoneType表示没有找到合pattern的 大概哪里有错? 09/15 18:28
9F:推 kaichan:手动re 我会做在 feed 里 或是在 feed data 之前 09/16 00:31
谢谢你们!这个部份我解决罗^^
直接收寻re.findall('<a[^>]+href="(.+?)"', scontent2) 有成功将我要的收集在清单
※ 编辑: mirror012020 来自: 218.172.218.4 (09/21 12:49)