[問題] xpath的內容問題 求大大解答QQ

作者: NoneNaMey (NoneNamey)   2020-07-07 13:42:47
小弟最近在研究xpath,想說跟BeautifulSoup差不多,但是發現了一個問題
以這程式碼為例子:

就是當我想要抓取一則回文的內容,原本預計會像這樣回應

但是當我加上text()的時候,他好像會自動抓取子節點做分段....
結果就變這樣

求解QQ...
我要如何讓他不會自動分段
作者: alvinlin (林矜業)   2020-07-07 23:49:00
我覺得大家可能仰賴網路上的資訊了從你的問題來看,我都看不出你現在打算用什麼BeautifulSoup裡也有xpath的,但你的xpath是用什麼模組?Parsel也有xpath也有css。先把你用了什麼,程式寫了什麼寫清楚吧我估了一下,你可能是用lxml 的 etree但我懶得猜了
作者: TakiDog (多奇狗)   2020-07-08 01:17:00
etree很好用 你資訊貼詳細一點吧
作者: NoneNaMey (NoneNamey)   2020-07-08 12:45:00
抱歉,我是用etree沒錯。因為想學scrapy發現scrapy都是用xpath的語法,之前用bs4都是用find這個問題就是我想抓 索引、發文時間以及內文" target="_blank" rel="nofollow">
以這篇文為例子,總共只有15樓,我抓這行內碼出來的結果卻變成這樣 " target="_blank" rel="nofollow">
#抱歉 上面少給一張 " target="_blank" rel="nofollow">
作者: TakiDog (多奇狗)   2020-07-08 19:27:00
你想要一個xpath抓一頁全部樓層的回覆?
作者: alvinlin (林矜業)   2020-07-08 20:12:00
好吧。我大概懂了。但其實沒錯它中間變空白是因為它有圖及其他內容你沒處理啊https://i.imgur.com/eyVS1QS.jpg參考這個吧https://devhints.io/xpath這要再篩選啦,不是用一個篩選器就搞定的。你要再迴圈裡去判斷要再*在迴圈裡去判斷其實狀況其*他狀況另外,我建議你用Parsel套件。雖然它們可能同樣源自於lxml套件。但scrapy官方說也可以用bs4只是「它比較慢」(官方說的)。所以如果習慣bs4倒也不一定非用別的看起來有三種。chain在一起就行了https://i.imgur.com/3c7b4dQ.jpghttps://i.imgur.com/wGfreYa.jpg看起來有三種。chain在一起就行了看起來etree和parsel結果有點不同。你那個應該是把空格strip掉就行了吧https://i.imgur.com/CYs1hUf.jpg
作者: NoneNaMey (NoneNamey)   2020-07-09 12:25:00
感謝大大細心的講解~ 先把那個網站存到最愛XD等等來研究看看
作者: Plot3D (3D做圖)   2020-07-09 14:12:00
Bs4也說能用lxml就用,快10倍
作者: NoneNaMey (NoneNamey)   2020-07-09 14:19:00
嗯啊,而且速度上真的比bs4快很多
作者: alvinlin (林矜業)   2020-07-09 15:26:00
我的是正常的。你用我的code吧。因為parsle是scrapy用的,可以直接對應scrapy的selector小改即可。而且我覺得如果你去看你那個網站回文的html結構,其實它真的是有三種以上不同的結構。https://i.imgur.com/kxEjOJA.jpg它沒有多很多行啦。就是中間1235樓的內文是空的。你拿我程式去看每個內文就知怎麼回事了。Btw,bs4也可以用lxml你的code可能看不出來哪一樓是因為你把它們全混在一起了。你參考我的再去看文章的HTML就應該懂了。這裡實在解釋不清楚。
作者: NoneNaMey (NoneNamey)   2020-07-09 15:46:00
感謝alvinlin大的講解,我用你的方法是OK的。結構上我也有發現不一樣,因為發文者換行會多個<div>我是卡在我抓c-article那行內碼時會自動抓子結點分段,導致他list會因此分段,解決辦法就是用你用到的following-sibling 不過我還要了解一下XD還有太多我不懂的用法了QQ 只能慢慢學了會想用xpath是因為找工作如果會xpath比較不會被嫌(?我過去是用bs4+lxml解析器,不過速度真的慢xpath語法的很多
作者: alvinlin (林矜業)   2020-07-09 16:21:00
Ok.讚喔^^

Links booklink

Contact Us: admin [ a t ] ucptt.com