[問題] 爬蟲 拆寫字串問題

看板Python作者 (痛苦)時間9年前 (2016/10/19 22:33), 編輯推噓3(3028)
留言31則, 8人參與, 最新討論串1/1
各問大大好 小弟新手 最近在用python urllib2 的lxml方式 也就是xpath語法 想爬些資料參考 其中該網頁的某html的語段 onclick=" onProductClick(this,{'id':'2-mb-161017-twzh-1.png','name':'台北直飛馬尼拉/宿霧 *','creative':'http://www.airasia.com/cdn/aa-images/zh-TW/main-banner/2-mb-161017-twzh-1.png?sfvrsn=4','position':'Home page > zh-TW > main banner 2'})" 我想爬到解析"台北直飛馬尼拉/宿霧" 但不知道該怎解到那段字? 因為這一大串本身就是個大字串 用了許多方式 split atrip 都沒辦法切到重點 請問該如何解了? python 的 scrapy還沒試過 等會試試看 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.230.112 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1476887623.A.888.html

10/19 23:56, , 1F
直接 re 後 eval 成 dict 取值阿
10/19 23:56, 1F

10/19 23:57, , 2F
反正爬蟲就是髒活 能解決都可以啊@@
10/19 23:57, 2F

10/20 00:05, , 3F
eval(re.search('{.*}',context).group()).get('name')
10/20 00:05, 3F

10/20 00:05, , 4F
請問你說是用正則表達式嗎?
10/20 00:05, 4F

10/20 00:05, , 5F
'台北直飛馬尼拉/宿霧*'
10/20 00:05, 5F

10/20 00:05, , 6F
那urllib2 可以解出嗎
10/20 00:05, 6F

10/20 00:06, , 7F
是,這東西是最萬用的字串處理工具
10/20 00:06, 7F

10/20 00:06, , 8F
what? urllib2?
10/20 00:06, 8F

10/20 00:07, , 9F
python內建urllib2也可以爬蟲
10/20 00:07, 9F

10/20 00:08, , 10F
只是能力如何還在練習
10/20 00:08, 10F

10/20 00:09, , 11F
urllib 只是幫你取得資料,你問的是後製處理?
10/20 00:09, 11F

10/20 00:09, , 12F
只熟悉beautiful lxml
10/20 00:09, 12F

10/20 00:10, , 13F
剛筆誤^^
10/20 00:10, 13F

10/20 00:10, , 14F
大大說的 萬用字串處理 這樣有了解Y
10/20 00:10, 14F

10/20 00:11, , 15F
再去把正則式K熟點
10/20 00:11, 15F

10/20 00:11, , 16F
那些也只是把 DOM 結構拆出來,這個東西應該是 js code
10/20 00:11, 16F

10/20 00:13, , 17F
謝大大ˋ 對阿有猜到JS 字串真多
10/20 00:13, 17F

10/20 00:14, , 18F
想說lxml好懂理解又強大 沒想到還是要靠正則式
10/20 00:14, 18F

10/20 00:18, , 19F
並不是說沒辦法寫,是寫這東西根本不汎用...
10/20 00:18, 19F

10/20 02:14, , 20F
非常感謝你 我剛用lxml終於解到那字了 淚
10/20 02:14, 20F

10/20 09:13, , 21F
正則 或者直接抓class = name下面的值
10/20 09:13, 21F

10/20 09:47, , 22F
去頭去尾取中間~
10/20 09:47, 22F

10/20 10:26, , 23F
把 {} 這一段東西取出來塞 json.decode 呢 XD
10/20 10:26, 23F

10/20 13:38, , 24F
不行, 它裡面用單引號, JSON 規定要雙引號
10/20 13:38, 24F

10/20 15:19, , 25F
{}裡面不就是dictionary了嗎
10/20 15:19, 25F

10/20 17:10, , 26F
json.loads(s.replace('\'', '"')) XDD
10/20 17:10, 26F

10/20 17:10, , 27F
感覺有點髒
10/20 17:10, 27F

10/20 22:55, , 28F
我是用lxml 一直用split() 取到中間
10/20 22:55, 28F

10/21 01:52, , 29F
這個要乾淨解大概只能跑一個 JavaScript 直譯器來 eval
10/21 01:52, 29F

10/21 01:52, , 30F
不如 regex 硬幹拆一拆就算了
10/21 01:52, 30F

10/21 07:31, , 31F
小弟的作法和原P0一樣,re不太懂
10/21 07:31, 31F
文章代碼(AID): #1O1uH7Y8 (Python)
文章代碼(AID): #1O1uH7Y8 (Python)