Python 板


LINE

小弟最近在研究xpath,想說跟BeautifulSoup差不多,但是發現了一個問題 以這程式碼為例子: http://imgur.com/MmtRkj5 就是當我想要抓取一則回文的內容,原本預計會像這樣回應 http://imgur.com/7s9VoNJ 但是當我加上text()的時候,他好像會自動抓取子節點做分段.... 結果就變這樣 http://imgur.com/YMEA0Wd 求解QQ... 我要如何讓他不會自動分段 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.66.36 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1594100569.A.B25.html ※ 編輯: NoneNaMey (36.231.66.36 臺灣), 07/07/2020 13:44:12 ※ 編輯: NoneNaMey (36.231.66.36 臺灣), 07/07/2020 13:44:35 ※ 編輯: NoneNaMey (36.231.66.36 臺灣), 07/07/2020 13:44:54
1F:→ alvinlin: 我覺得大家可能仰賴網路上的資訊了 07/07 23:49
2F:→ alvinlin: 從你的問題來看,我都看不出你現在打算用什麼 07/07 23:50
3F:→ alvinlin: BeautifulSoup裡也有xpath的,但你的xpath是用什麼模組 07/07 23:52
4F:→ alvinlin: ? 07/07 23:52
5F:→ alvinlin: Parsel也有xpath也有css。先把你用了什麼,程式寫了什麼 07/07 23:53
6F:→ alvinlin: 寫清楚吧 07/07 23:53
7F:→ alvinlin: 我估了一下,你可能是用lxml 的 etree 07/07 23:55
8F:→ alvinlin: 但我懶得猜了 07/07 23:56
9F:→ TakiDog: etree很好用 你資訊貼詳細一點吧 07/08 01:17
10F:→ NoneNaMey: 抱歉,我是用etree沒錯。因為想學scrapy 07/08 12:45
11F:→ NoneNaMey: 發現scrapy都是用xpath的語法,之前用bs4都是用find 07/08 12:47
12F:→ NoneNaMey: 這個問題就是我想抓 索引、發文時間以及內文 07/08 12:48
13F:→ NoneNaMey: http://imgur.com/nDR3sDK 07/08 13:03
14F:→ NoneNaMey: 以這篇文為例子,總共只有15樓,我抓這行內碼 07/08 13:06
15F:→ NoneNaMey: 出來的結果卻變成這樣 http://imgur.com/xPr8FMt 07/08 13:08
16F:→ NoneNaMey: #抱歉 上面少給一張 http://imgur.com/Vlt2oTP 07/08 13:10
17F:→ TakiDog: 你想要一個xpath抓一頁全部樓層的回覆? 07/08 19:27
沒錯QQ 而且樓層都要對到
18F:→ alvinlin: 好吧。我大概懂了。但其實沒錯 07/08 20:12
19F:→ alvinlin: 它中間變空白是因為它有圖及其他內容你沒處理啊 07/08 20:15
20F:→ alvinlin: https://i.imgur.com/eyVS1QS.jpg 07/08 20:18
21F:→ alvinlin: 參考這個吧 07/08 20:22
22F:→ alvinlin: https://devhints.io/xpath 07/08 20:22
23F:→ alvinlin: 這要再篩選啦,不是用一個篩選器就搞定的。你要再迴圈裡 07/08 20:36
24F:→ alvinlin: 去判斷 07/08 20:36
25F:→ alvinlin: 要再*在迴圈裡去判斷其實狀況 07/08 20:38
26F:→ alvinlin: 其*他狀況 07/08 20:39
27F:→ alvinlin: 另外,我建議你用Parsel套件。雖然它們可能同樣源自於lx 07/08 20:56
28F:→ alvinlin: ml套件。但scrapy官方說也可以用bs4只是「它比較慢」( 07/08 20:56
29F:→ alvinlin: 官方說的)。所以如果習慣bs4倒也不一定非用別的 07/08 20:56
30F:→ alvinlin: 看起來有三種。chain在一起就行了 07/09 00:45
31F:→ alvinlin: https://i.imgur.com/3c7b4dQ.jpg 07/09 00:45
32F:→ alvinlin: https://i.imgur.com/wGfreYa.jpg 07/09 00:47
33F:→ alvinlin: 看起來有三種。chain在一起就行了 07/09 00:47
34F:→ alvinlin: 看起來etree和parsel結果有點不同。 07/09 01:26
35F:→ alvinlin: 你那個應該是把空格strip掉就行了吧 07/09 01:26
我試過strip()和replace掉空白,只是最主要是PO文者有換行,他的list就多一個值,就對不到了 就像這篇 http://imgur.com/8owWR0I 他換了很多行,出來的結果就變這樣 http://imgur.com/NrDMGSP
36F:→ alvinlin: https://i.imgur.com/CYs1hUf.jpg 07/09 01:26
37F:→ NoneNaMey: 感謝大大細心的講解~ 先把那個網站存到最愛XD 07/09 12:25
38F:→ NoneNaMey: 等等來研究看看 07/09 12:25
※ 編輯: NoneNaMey (36.231.93.193 臺灣), 07/09/2020 12:45:37 ※ 編輯: NoneNaMey (36.231.93.193 臺灣), 07/09/2020 13:24:18 ※ 編輯: NoneNaMey (36.231.93.193 臺灣), 07/09/2020 13:48:43 ※ 編輯: NoneNaMey (36.231.93.193 臺灣), 07/09/2020 13:49:14
39F:推 Plot3D: Bs4也說能用lxml就用,快10倍 07/09 14:12
40F:→ NoneNaMey: 嗯啊,而且速度上真的比bs4快很多 07/09 14:19
41F:→ alvinlin: 我的是正常的。你用我的code吧。因為parsle是scrapy用的 07/09 15:26
42F:→ alvinlin: ,可以直接對應scrapy的selector小改即可。而且我覺得如 07/09 15:26
43F:→ alvinlin: 果你去看你那個網站回文的html結構,其實它真的是有三種 07/09 15:26
44F:→ alvinlin: 以上不同的結構。 07/09 15:26
45F:→ alvinlin: https://i.imgur.com/kxEjOJA.jpg 07/09 15:26
46F:→ alvinlin: 它沒有多很多行啦。就是中間1235樓的內文是空的。你拿我 07/09 15:31
47F:→ alvinlin: 程式去看每個內文就知怎麼回事了。 07/09 15:31
48F:→ alvinlin: Btw,bs4也可以用lxml 07/09 15:31
49F:→ alvinlin: 你的code可能看不出來哪一樓是因為你把它們全混在一起了 07/09 15:34
50F:→ alvinlin: 。你參考我的再去看文章的HTML就應該懂了。這裡實在解釋 07/09 15:34
51F:→ alvinlin: 不清楚。 07/09 15:34
52F:→ NoneNaMey: 感謝alvinlin大的講解,我用你的方法是OK的。 07/09 15:46
53F:→ NoneNaMey: 結構上我也有發現不一樣,因為發文者換行會多個<div> 07/09 15:47
54F:→ NoneNaMey: 我是卡在我抓c-article那行內碼時會自動抓子結點分段, 07/09 15:48
55F:→ NoneNaMey: 導致他list會因此分段,解決辦法就是用你用到的 07/09 15:48
56F:→ NoneNaMey: following-sibling 不過我還要了解一下XD 07/09 15:49
57F:→ NoneNaMey: 還有太多我不懂的用法了QQ 只能慢慢學了 07/09 15:50
58F:→ NoneNaMey: 會想用xpath是因為找工作如果會xpath比較不會被嫌(? 07/09 15:52
※ 編輯: NoneNaMey (36.231.93.193 臺灣), 07/09/2020 15:54:58
59F:→ NoneNaMey: 我過去是用bs4+lxml解析器,不過速度真的慢xpath語法的 07/09 15:56
60F:→ NoneNaMey: 很多 07/09 15:56
61F:推 alvinlin: Ok.讚喔^^ 07/09 16:21







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP