看板 Python 關於我們 聯絡資訊
請問一下,關於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)
kaichan:先用 re 把 style 除掉? 我想不到方法的時候會這樣做 09/15 00:36
請問要怎麼把style除掉呢? 我的想法是 re.search('style',attrs) 如果 is None 才執行,不然就不執行 可是 re.search('style',attrs) 一直錯誤,好像是因為attrs是清單,但是我不知道如何取出他>"<
seedman:看來就是內建的htmlparser容錯比較弱 你可以用lxml 09/15 00:52
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)
seedman:就是把網頁當字串來找 發現用re.findall的話連group都不用 09/15 07:48
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)
seedman:.任意字元 +?一個以上越短越好 ()把這段群組起來 09/15 18:28
seedman:會NoneType表示沒有找到合pattern的 大概哪裡有錯? 09/15 18:28
kaichan:手動re 我會做在 feed 裡 或是在 feed data 之前 09/16 00:31
謝謝你們!這個部份我解決囉^^ 直接收尋re.findall('<a[^>]+href="(.+?)"', scontent2) 有成功將我要的收集在清單 ※ 編輯: mirror012020 來自: 218.172.218.4 (09/21 12:49)