gedoor / legado

Legado 3.0 Book Reader with powerful controls & full functions❤️阅读3.0, 阅读是一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快捷舒适的试读体验。
GNU General Public License v3.0
28.62k stars 3.82k forks source link

读取div标签时次序错乱 #4243

Closed jacklee-code closed 1 day ago

jacklee-code commented 2 days ago

确认 / Assignments

问题描述 / Describe Bugs

在使用正确的正文规则下读取正文的HTML标签,输出的结果跟chrome 开发者工具下的标签顺序不一致,最终导致段落次序错乱。例如文章中间的内容在开首、开首的内容却在结尾。

复现步骤 / How to reproduce

目标网址: https://www.hetubook.com/

书源(JSON): hetubook.com.txt

书源(纯文字): { "bookSourceComment": "", "bookSourceGroup": "牆外", "bookSourceName": "和圖書", "bookSourceType": 0, "bookSourceUrl": "https://www.hetubook.com/", "bookUrlPattern": "", "customOrder": -2, "enabled": true, "enabledCookieJar": true, "enabledExplore": true, "exploreUrl": "", "header": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36", "lastUpdateTime": 1727517993717, "respondTime": 180000, "ruleBookInfo": { "author": "", "coverUrl": "", "init": "", "intro": "", "kind": "//[@id=\"left\"]/div[1]/div[2]/text()##類別:", "lastChapter": "id.dir@dd.-1@tag.a@text", "name": "", "tocUrl": "", "wordCount": "//[@id=\"left\"]/div[1]/div[3]/text()##字數:" }, "ruleContent": { "content": "id.content@html", "nextContentUrl": "", "replaceRegex": "", "title": "" }, "ruleExplore": { "author": "", "bookList": "", "bookUrl": "", "coverUrl": "", "intro": "", "kind": "", "name": "" }, "ruleSearch": { "author": "tag.h4@tag.span@text##/ ", "bookList": "id.body@tag.dd", "bookUrl": "tag.h4@tag.a@href", "checkKeyWord": "", "coverUrl": "tag.img@src", "intro": "class.intro@text", "name": "tag.h4@tag.a@text" }, "ruleToc": { "chapterList": "id.dir@dd", "chapterName": "tag.a@text", "chapterUrl": "tag.a@href", "isVolume": "", "nextTocUrl": "" }, "searchUrl": "https://www.hetubook.com/search/?keyword={{key}}", "weight": 0 }

搜寻书本: 羅喉 (繁体字;該书源為繁體書源)

期望结果: (文章开首) 「呀,過來過來。」一個肥頭大耳的少年揉揉了自己的鼻子,盡量擺出和藹的樣子。 被他招呼的小童大約只有八九歲,梳著朝天辮,警惕的看了他一眼,並不肯靠近,手上似乎還捏了個東西,「大茶壺,你想幹什麼,我姐姐說叫我少理你。」 .......

实际结果: (文章开首) 「大茶壺,你又死到哪裡去了?」遠處傳來一個尖銳的女聲。 (该段落属于文章中尾三的段落) 「讓我看看你姐發了多少歲錢給你?」大茶壺漫不經心的道,眼睛卻死死的盯著小童拿著紅包的手。 (该段落属于文章中第五的段落)

Chromium Edge下的HTML标签:

html_tag

观察HTML的次序可以发现div并非乱序,但是不知为何经由阅读解析后div标签的次序会混乱了导致段落出现错乱。

确认 / Assignment

其他信息 / Additions

No response

日志提交 / Relevant log output

No response

阅读版本 / Legado version

3.25

Android版本 / Android version

Android 14

机型 / Model

Samsung S23 Ultra

821938089 commented 2 days ago

请右键菜单查看网页源码,而不是通过开发者工具,这里的网页源码和原来可能是不一样的

jacklee-code commented 2 days ago

请右键菜单查看网页源码,而不是通过开发者工具,这里的网页源码和原来可能是不一样的

<div id="content" style="font-size:20px;line-height:2.4;">
   <div class="mask mask2"></div>
   <h2 class="h2">楔子</h2>
   <div>「大茶壺,你又死到哪裡去了?」遠處傳來一個尖銳的女聲。</div>
   <div>「讓我看看你姐發了多少歲錢給你?」大茶壺漫不經心的道,眼睛卻死死的盯著小童拿著紅包的手。</div>
   <div>「不給你看,我姐說了,不給你看,我,我回去了。」小璋兒被他看得有些心驚肉跳,想起其姐的叮囑,更是把手向背後藏,扭頭就跑。</div>
   <div>「你,你想騙我錢,要有這麼好的法子,你不自己用?」小童不信的道,轉身又想走。</div>
   <div>兩盞茶功夫之後,小童呆若木雞的看著大茶壺,手裡的小紅包不知道什麼時候到了他手裡。</div>
   <div>眼前一花,小童哪裡跑得過大茶壺,大茶壺年齡差不多是他一倍,身強力壯,一把攔在小童面前,像老鷹盯上小雞似的,涎笑道:「別走嘛,手上是啥?」</div>
   <div>「可是,我,我們哪來那麼多的銀子。」小童聽罷不由大失所望,大茶壺說的話是正確的,問題是姐弟倆現在都身不由己,而且年紀幼小,哪來的銀子滿足喜娘的胃口。</div>
   <div>「什麼大茶壺,小茶壺的,叫茶壺哥!」大茶壺神氣的道。</div>
   <div>這下可惹火了大茶壺,一把把小童推到地上,兇狠的道:「呸<samp>和_圖_書</samp>,你要能坐莊,人人輸錢給你,這不是一本萬利是什麼?茶壺哥教你的就是個賭字,你自己剛才和我賭了,願賭就要服輸,這算是我額外再教你的。」</div>
   <div>小童聽得捏緊了拳頭,怒道:「你又來誑我,無非是想騙我姐姐就範,休想,等我長大了,我會保護她。」</div>
   <div>「茶,茶壺哥。」小童咬了咬嘴唇改了口,雖然他知道眼前這個傢伙根本不是什麼好人,而且姐姐一再叮囑他不要理他,但是剛才大茶壺提出來的誘惑卻是他沒辦法抵擋的。</div>
   <div>小童怔怔的看著大茶壺,半信半疑但又帶著克制不住的希翼,「大茶壺你有辦法讓我姐離開這裏?」</div>
   <div>哪怕只有千分之一的希望,也要聽聽,或許眼前這狗嘴裡真能吐出點象牙。</div>
   <div>「呀,她怎麼可以這樣說我,我對你們姐弟倆還不夠好嗎?」大茶壺有點惱羞成怒的道,不過很快他抑制住了自己的情緒,裝作不經意瞟了瞟小孩手上捏著的東西,「小璋兒,聽說你姐給你發過年錢了?」</div>
   <div>小童頓時像中了定身法一樣停住了,大茶壺看了看園子周圍,現在正是早上,客人們都<big>和-圖-書</big>還沒來或是沒起來,他吐了口唾沫地上,這才慢條斯理的向小童走去。</div>
   <div>小童見錢是要不回來了,不由號啕大哭,好在園子里這時沒人,大茶壺見他哭得厲害,心裏也有點不是滋味,如非這幾天手頭緊得很,他再厚臉皮也不至於把主意打到小童的歲錢身上來。</div>
   <div>小童見他拆開紙包,忽然收住哭聲,也不抹眼淚,只把目光兇狠的盯著大茶壺,那目光惡狠狠的像是想把他連骨帶皮一起吞了,看得大茶壺忽然有點心虛,訕訕的笑了笑,走過去,把手上的五十個銅板里掏了一個丟在小童面前,故作豪爽的道:「今兒茶壺哥最後再教你一個乖,記得贏了錢后要分紅,做人不可以趕盡殺絕,日後好相見。」</div>
   <div>「四五六,大。」大茶壺哈哈一笑,手指石桌道:「看到了吧,你平時也有看到那些豪客有時會在樓里擺賭局,並且不禁人參加,只要你能從中贏錢,就算是喜娘都沒辦法強拿走,這可是一本萬利的,你如果能當庄,扔出來豹子就通殺。」</div>
   <div>小童又衝上來死死抱住大茶壺的腰不放,哭鬧道:「你騙我,你騙我,把錢還給我<u>和-圖-書</u>,還什麼一本萬利,你騙我錢。」</div>
   <div>被他招呼的小童大約只有八九歲,梳著朝天辮,警惕的看了他一眼,並不肯靠近,手上似乎還捏了個東西,「大茶壺,你想幹什麼,我姐姐說叫我少理你。」</div>
   <div>「免費?」小童幾乎不敢相信大茶壺有這麼好心。</div>
   <div>大茶壺見意圖又被識破,不由一時滯了話頭,不過轉眼他又有了別的主意,試探著問道:「那我有別的辦法賺錢,你學不學?」</div>
   <div>大茶壺把小童一把推開,罵罵咧咧的道:「什麼騙你,願賭服輸,你剛才自己輸給我了,還想討回去?說到哪兒我都不怕,這可是你家茶壺哥我光明正大贏的,你就告到你姐,告到喜娘那裡,我也不怕。」</div>
   <div>大茶壺眨眨眼道:「最好的辦法當然是你姐肯鬆口,現在就開始接客,只要遇上一個喜歡上你的豪客,那賞錢銀子就跟水流似的,你想擋都擋不住,這錢按規矩是分成的,雖說樓里拿大頭,但積少成多也是個數,你姐不就有希望離開這裏了。」</div>
   <div>大茶壺收起紅包就想走,小童這才如夢初醒般撲上去叫道:「你又騙我,快把歲錢還給我,那是我姐姐給我的。<samp>和圖書</samp>」</div>
   <div>大茶壺連忙停了口沫亂飛的說教,「不和你這賴皮小鬼說了,喜娘在叫了,今天的事你最好不要說出去,這是贏來的錢;我半點不怕,;但你的歲錢是你姐私下給的,萬一喜娘計較,連帶你姐也有苦頭吃。」</div>
   <div>見小童終於上勾,大茶壺嘿嘿一笑,一伸手,掌心出現了三顆骰子,向石桌上一丟,骰子一陣亂滾,最後落定分別是四五六。</div>
   <div>「奶奶的,我看看有多少?」大茶壺掏出紅紙包,拆開一看,裏面也就不過五十個銅錢,不由心下大為失望,本來以為裏面至少值一兩銀子的。</div>
   <div>「免費,唉,就當我做善事好了。」大茶壺痛心疾首,彷彿一夜間做生意蝕本狀。</div>
   <div>「賺錢?」小童迷惑的道。</div>
   <div>「你怎麼知道?」小璋兒的小臉上一遍訝然,他手裡捏著的紅紙包正是姐姐偷偷封給他的歲錢,不過其姐再三叮囑不要讓樓里人知道了。本來過年給小孩歲錢並不是什麼大不了的事,但這對姐弟不一樣,小璋兒更是寄人蘺下,有所避忌。</div>
   <div>當然了,大茶壺上前一把拉住小童,強拉著帶來到園內一顆樹后的石桌邊,正色道:「你既然不想你姐呆在這<s>和_圖_書</s>裏,總得有銀子才出得去,沒銀子,就是仙女來了也得脫衣服,這是規矩。不過我有辦法讓你賺錢,一本萬利,就看你學不學了,不過先說好,你手上的年錢就當學費了。」</div>
   <div>眼看著小童就要跑出去了,大茶壺突然叫道:「你還想不想讓你姐姐離開這裏?」</div>
   <div>「讓你姐離開這裏只有一個辦法,就是錢,大筆的錢,你和你姐要是拿得出來讓喜娘動心的銀子,自然就能離開了,更不用擔心她會逼你姐去……」</div>
   <div>「好好,我的小少爺,我免費教你,還不成?」大茶壺連忙拉住他。</div>
   <div>說完,大茶壺一溜煙的跑了。</div>
   <div>「那到底是啥法子?」小童想了半天,如果根本不需要自己付出什麼,似乎就不是騙人,幫助姐姐的願望終於佔了上風,不由心動了。</div>
   <div>一個要看,一個不給看,兩人糾纏起來,大茶壺力氣大得多,小童哪是對手,眼看急了,一口咬在大茶壺手上,痛得他鬆了手,小童撒腿就向園外跑,只要跑出園門進入樓區,大茶壺臉皮再厚也不敢當著所有人面搶一小孩東西。</div>
   <div>「呀,過來過來。」一個肥頭大耳的少年揉揉了自己的鼻子,盡量擺出和藹的樣子。</div>
</div>

确实是不一样,想请教有什么思路可以令到输出顺序跟Edge的开发者工具一致吗(即解析出正确的段落顺序)

821938089 commented 2 days ago

用webview或找它js是怎么恢复的

jacklee-code commented 2 days ago

用webview或找它js是怎么恢复的

请问以webview开启章节要如何写: 我尝试过在正文规则后加上webView true "ruleContent": { "content": "id.content@html, {\"webView\":true}", "nextContentUrl": "", "replaceRegex": "", "title": "" }

或者章节URL加上规则后加上webView true "ruleToc": { "chapterList": "id.dir@dd", "chapterName": "tag.a@text", "chapterUrl": "tag.a@href", {\"webView\":true}" "isVolume": "", "nextTocUrl": "" }

但是两者好像都无效。

821938089 commented 2 days ago

章节URL后加 ##$##,{"webView": true}

jacklee-code commented 2 days ago

章节URL后加 ##$##,{"webView": true}

很抱歉一直麻烦到您,但是我改了以下两处依旧无效:

Screenshot 2024-09-28 191515 Screenshot 2024-09-28 191530
821938089 commented 2 days ago

正文规则按原来的写

jacklee-code commented 2 days ago

正文规则按原来的写

非常感谢您! 以WebView加载后成功解决了乱序问题,现在段落次序正常显示了。