作者jackjenny (痛苦)
看板Python
標題[問題] 爬蟲 拆寫字串問題
時間Wed Oct 19 22:33:40 2016
各問大大好
小弟新手
最近在用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://webptt.com/m.aspx?n=bbs/Python/M.1476887623.A.888.html
1F:→ s860134: 直接 re 後 eval 成 dict 取值阿 10/19 23:56
2F:→ s860134: 反正爬蟲就是髒活 能解決都可以啊@@ 10/19 23:57
3F:→ s860134: eval(re.search('{.*}',context).group()).get('name') 10/20 00:05
4F:→ jackjenny: 請問你說是用正則表達式嗎? 10/20 00:05
5F:→ s860134: '台北直飛馬尼拉/宿霧*' 10/20 00:05
6F:→ jackjenny: 那urllib2 可以解出嗎 10/20 00:05
7F:→ s860134: 是,這東西是最萬用的字串處理工具 10/20 00:06
8F:→ s860134: what? urllib2? 10/20 00:06
9F:→ jackjenny: python內建urllib2也可以爬蟲 10/20 00:07
10F:→ jackjenny: 只是能力如何還在練習 10/20 00:08
11F:→ s860134: urllib 只是幫你取得資料,你問的是後製處理? 10/20 00:09
12F:→ jackjenny: 只熟悉beautiful lxml 10/20 00:09
13F:→ jackjenny: 剛筆誤^^ 10/20 00:10
14F:→ jackjenny: 大大說的 萬用字串處理 這樣有了解Y 10/20 00:10
15F:→ jackjenny: 再去把正則式K熟點 10/20 00:11
16F:→ s860134: 那些也只是把 DOM 結構拆出來,這個東西應該是 js code 10/20 00:11
17F:→ jackjenny: 謝大大ˋ 對阿有猜到JS 字串真多 10/20 00:13
18F:→ jackjenny: 想說lxml好懂理解又強大 沒想到還是要靠正則式 10/20 00:14
19F:→ s860134: 並不是說沒辦法寫,是寫這東西根本不汎用... 10/20 00:18
20F:→ jackjenny: 非常感謝你 我剛用lxml終於解到那字了 淚 10/20 02:14
21F:→ MOONY135: 正則 或者直接抓class = name下面的值 10/20 09:13
22F:推 shadowjohn: 去頭去尾取中間~ 10/20 09:47
23F:推 aweimeow: 把 {} 這一段東西取出來塞 json.decode 呢 XD 10/20 10:26
24F:→ uranusjr: 不行, 它裡面用單引號, JSON 規定要雙引號 10/20 13:38
25F:→ BigBank: {}裡面不就是dictionary了嗎 10/20 15:19
26F:→ aweimeow: json.loads(s.replace('\'', '"')) XDD 10/20 17:10
27F:→ aweimeow: 感覺有點髒 10/20 17:10
28F:→ jackjenny: 我是用lxml 一直用split() 取到中間 10/20 22:55
29F:→ uranusjr: 這個要乾淨解大概只能跑一個 JavaScript 直譯器來 eval 10/21 01:52
30F:→ uranusjr: 不如 regex 硬幹拆一拆就算了 10/21 01:52
31F:推 koshi0413: 小弟的作法和原P0一樣,re不太懂 10/21 07:31