精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一日一技:使用Python翻譯HTML中的文本字符串

開發 前端
你之所以會覺得這個問題很難解決,是因為你有一個錯覺,請看上面這張截圖,我打印了text_list?。打印出來是一個包含字符串的列表。所以你可能會覺得。使用lxml寫Xpath的時候,/text()返回的總是包含字符串的列表。

相信大家都用過瀏覽器的翻譯網頁功能,例如對于下圖這個英文網頁:

圖片

一鍵翻譯成中文以后是這樣的:

圖片

你可能會覺得這個功能很簡單,不就是字符串替換嗎?那你可以試一試把下面這個HTML片段中的<p>標簽下面的英文翻譯成中文。其它標簽中的不要改動:

<div>
<p>if you want to parse date and time, your could use <em>datetime</em>, by use this library, you can generate now time by one line code <span>datetime.datetime.now()</span> this is so easy.</p>
</div>

在<em>?標簽中的datetime和<span>?標簽中的datetime.datetime.now()不需要翻譯。

你一拍腦袋,馬上寫出了下面這幾行代碼(假設你已經有了一個現成的translate()函數,傳入英文,輸出中文):

from lxml.html import fromstring
source = '''<div>
<p>if you want to parse date and time, your could use <em>datetime</em>, by use this library, you can generate now time by one line code <span>datetime.datetime.now()</span> this is so easy.</p>
</div>
'''

selector = fromstring(source)
text_list = selector.xpath('//p/text()')
for text in text_list:
chinese = translate(text)
...

當你寫到這里,你應該會愣一下。因為你突然發現一個問題,怎么把中文替換回去?

不用嘗試去百度了。在今天(2022-06-20)之前,整個中文網絡里面,你找不到解決方法。

一個比較笨的辦法是直接對原始的HTML字符串進行文本替換:

for text in text_list:
chinese = translate(text)
source = source.replace(text, chinese)

但這樣做,效率非常低。因為你要不停掃描整個HTML字符串。一般一個中型網站的HTML就有幾千上萬行,十幾二十萬個字符。你每翻譯一小段就全文替換一次,這個時間會非常漫長。

那有沒有辦法只對當前這一個<p>?標簽里面的文本進行替換呢?關鍵的問題來了,你替換可以,但是怎么才能不影響這個<p>標簽下面的兩個子標簽?要保證文本和子標簽的相對位置不改變。

如果<p>標簽下面只有一段文本,沒有子標簽,那么非常簡單,如下圖所示:

圖片

但現在的問題是,<p>標簽下面有三段文本。每段文本之間還插入了其它的子標簽。我們怎么樣對每一段文本進行替換,但是又保持文本的相對順序,并且還不能影響子標簽?

圖片

p.text這種寫法首先就可以排除了,因為它沒有辦法指定替換第幾段文本。

你之所以會覺得這個問題很難解決,是因為你有一個錯覺,請看上面這張截圖,我打印了text_list?。打印出來是一個包含字符串的列表。所以你可能會覺得。使用lxml寫Xpath的時候,/text()返回的總是包含字符串的列表。

但實際上,返回的列表里面的元素并不是字符串,而是_ElementUnicodeResult對象。如下圖所示:

圖片

不是字符串就簡單了,那么我們可以獲取每一個文本對象的父標簽。然后修改父標簽下面的文本就可以了。

看到這里,你肯定會問,這三個文本節點的父標簽,不都是同一個<p>嗎?如果你覺得是,那你就犯了想當然的錯誤。我們用代碼來看看:

圖片

其實只有第一段文本的父標簽是<p>?。第二段文本的父標簽,竟然是<p>?的子標簽<em>?。第三段文本的父標簽,是<span>。

等等,如果第二段文本的父標簽是<em>?,那么<em>datetime</em>?里面的datetime?的父標簽是什么?它的父標簽也是<em>?!那么問題來了,<em>的text()?文本節點,怎么可能又是datetime?,又是<p>下面的第二段文本呢?

實際上,<em>的text()?始終都是datetime。如下圖所示:

圖片

那么,<p>?的第二段文本跟這個<em>?標簽是什么關系?實際上,這個關系叫做tail。如下圖所示:

圖片

在一個標簽里面,只有第一段text?是它真正的text()?,如果這個標簽有子標簽,那么位于子標簽后面的文本,是這個子標簽的tail?。只不過當我們在正則表達式里面寫/text()?的時候,lxml會幫我們把所有子標簽的tail都算作當前標簽的text。

我們可以使用文本節點的.is_text和.is_tail來判斷它屬于哪種文本。最終運行效果如下圖所示:

? 圖片 ?

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2022-11-06 21:04:49

字符串字段參數

2021-10-20 20:02:47

字符變量函數

2024-05-29 00:00:01

字符串Python縮進

2025-06-13 01:15:00

正則表達式大模型

2021-07-27 21:32:57

Python 延遲調用

2022-03-12 20:38:14

網頁Python測試

2021-05-08 19:33:51

移除字符零寬

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監控

2021-04-12 21:19:01

PythonMakefile項目

2022-05-02 16:27:01

JavaScriptHTMLPython

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2021-09-13 20:38:47

Python鏈式調用

2021-03-12 21:19:15

Python鏈式調用

2024-07-30 08:11:16

2024-07-30 08:16:18

Python代碼工具

2021-10-15 21:08:31

PandasExcel對象

2022-06-28 09:31:44

LinuxmacOS系統

2024-08-27 22:08:13

2021-11-12 05:00:43

裝飾器代碼功能
點贊
收藏

51CTO技術棧公眾號

日韩中文字幕在线播放| 欧美撒尿777hd撒尿| 国产综合第一页| 黄色污污网站在线观看| 欧美韩日高清| 精品伦理精品一区| 少妇性l交大片| 污污视频在线| 国产日韩欧美激情| 国产传媒一区| 一级α片免费看刺激高潮视频| 欧美日韩一区二区高清| 亚洲欧洲自拍偷拍| 少妇丰满尤物大尺度写真| 户外露出一区二区三区| 亚洲精品视频在线| 日韩欧美视频一区二区| 人妻精品无码一区二区| 久久国产精品99精品国产| 国模视频一区二区| 潘金莲一级黄色片| 国产精选一区| 亚洲国产天堂久久国产91 | 国产精品视区| 久久91精品国产91久久久| 无码一区二区三区在线| 99久久免费精品国产72精品九九| 精品视频一区三区九区| 男女高潮又爽又黄又无遮挡| 日本高清成人vr专区| 国产无一区二区| 精品久久精品久久| 亚洲国产精彩视频| 国产一区二三区好的| 国产精品丝袜白浆摸在线| 999这里只有精品| 午夜精品久久99蜜桃的功能介绍| 色999日韩欧美国产| 三级网站在线免费观看| 欧美成a人免费观看久久| 日韩精品一区二区三区中文不卡| 邪恶网站在线观看| 亚洲综合av一区二区三区| 狠狠爱在线视频一区| 轻点好疼好大好爽视频| 欧美1234区| 一区二区三区精品视频| 亚洲五码在线观看视频| 国产精品扒开做爽爽爽的视频| 国产三级久久久| 日本不卡二区| 国产鲁鲁视频在线观看免费| 国产欧美视频一区二区| 日韩欧美一区二区三区久久婷婷| 每日更新av在线播放| 99精品国产一区二区三区不卡| 国产高清在线精品一区二区三区| 成人爽a毛片一区二区| 国产91精品免费| 国产一区二区高清视频| 天天爱天天干天天操| 91麻豆免费看片| 欧美国产综合视频| 国产一二三区在线视频| 国产欧美1区2区3区| 先锋影音一区二区三区| 欧美18一19xxx性| 亚洲啪啪综合av一区二区三区| 97精品国产97久久久久久粉红| а√天堂官网中文在线| 亚洲综合久久久| 91成人在线观看喷潮教学| 亚洲欧美小说色综合小说一区| 91国偷自产一区二区开放时间| 少妇一级淫免费放| 国产免费av国片精品草莓男男| 日韩精品一区二区三区四区 | 欧美日韩一区二区三区四区不卡| 日韩精品中文字幕在线| 亚洲理论片在线观看| 97在线精品| 久久久在线视频| 国产又大又黄又粗| 久久精品国产网站| 国产精品日韩一区二区免费视频| 日本一级在线观看| 亚洲欧洲成人自拍| 亚洲精品蜜桃久久久久久| 成人免费影院| 在线播放欧美女士性生活| 亚洲av人人澡人人爽人人夜夜| 久久99性xxx老妇胖精品| 色婷婷**av毛片一区| 久久亚洲AV无码| 青娱乐精品视频在线| 91免费看蜜桃| 国产午夜在线观看| 亚洲国产精品一区二区久久恐怖片| 97国产精东麻豆人妻电影| 视频欧美精品| 日韩www在线| 国产免费美女视频| 久久av在线| 亚洲一区国产精品| 精品视频一二三| 一区二区三区成人| 天天操天天摸天天爽| 国产成人一二片| 日韩在线小视频| 五月天综合激情网| 高清av一区二区| 一本一道久久久a久久久精品91| www视频在线观看| 56国语精品自产拍在线观看| 在线免费观看日韩av| 欧美日韩专区| 国产日韩欧美电影在线观看| 天堂中文资源在线| 一区二区欧美精品| 亚洲一二三av| 日韩欧美在线中字| 88国产精品欧美一区二区三区| 99久久精品免费看国产交换| 国产偷国产偷亚洲高清人白洁| 2018国产在线| 天堂精品在线视频| 久久精品91久久久久久再现| 黄色av网站免费观看| 91麻豆国产在线观看| 日韩欧美不卡在线| 91精品入口| 不卡中文字幕av| 中文字幕一级片| 国产欧美日韩在线观看| av免费中文字幕| 偷拍一区二区| 91精品国产色综合久久不卡98| 亚洲第一天堂网| 亚洲黄色尤物视频| 日本特黄在线观看| 中文字幕一区二区精品区| 国产日韩欧美在线| 中文字幕日本在线观看| 在线观看91精品国产入口| 在线观看日本中文字幕| 久久久成人网| 日韩精品一线二线三线| 在线成人视屏| 中文字幕欧美国内| 亚洲综合五月天婷婷丁香| 国产精品人成在线观看免费| 精品亚洲一区二区三区四区| 清纯唯美日韩| 成人美女av在线直播| 麻豆传媒视频在线观看| 欧美一区三区二区| 国产女人被狂躁到高潮小说| 国产成人免费视频一区| 亚洲精品蜜桃久久久久久| 精品五月天堂| 国产91ⅴ在线精品免费观看| 免费黄色片在线观看| 在线观看欧美日本| 91禁男男在线观看| 国产精品一区二区不卡| 亚洲精品久久久久久久蜜桃臀| 美国成人xxx| 日韩美女视频中文字幕| av网在线观看| 日韩精品一区二区三区中文精品 | 老司机午夜在线| 欧美一区二区精美| 日韩欧美亚洲一区二区三区| 2024国产精品| 亚洲一区二区蜜桃| 中文在线日韩| 国产一区二区在线网站| 免费高清视频在线一区| 久久亚洲电影天堂| 四虎影视在线观看2413| 欧美三级中文字幕| 一区二区三区免费高清视频| 久久久久国产免费免费| 亚洲天堂网2018| 国产欧美午夜| 伊人久久大香线蕉精品| 国产伦乱精品| 国产精品一二三在线| 激情av在线| 在线观看日韩av| 亚洲免费一级片| 一本到不卡免费一区二区| 动漫性做爰视频| 久久久综合九色合综国产精品| 午夜在线观看av| 在线欧美一区| 偷拍盗摄高潮叫床对白清晰| 欧美调教网站| 亚洲精品欧美极品| 精品3atv在线视频| 欧美高清性猛交| 北岛玲一区二区三区| 精品国产免费一区二区三区四区 | 日韩成人av毛片| 中文字幕第一区二区| 亚洲天堂2024| 极品少妇xxxx精品少妇| 国模吧无码一区二区三区| 91精品久久久久久久久久不卡| 欧美一区1区三区3区公司| 亚洲一二三区视频| 国产精品老女人精品视频| 超碰在线视屏| 久久6精品影院| 8888四色奇米在线观看| 亚洲女人被黑人巨大进入| 精品区在线观看| 欧美蜜桃一区二区三区| 国产成人自拍偷拍| 天天做天天摸天天爽国产一区 | 亚洲毛片播放| 激情视频小说图片| 日韩免费一区| 日韩av图片| 免费看av成人| 久久影院理伦片| 盗摄牛牛av影视一区二区| 成人精品一区二区三区电影黑人 | 一本色道久久综合亚洲精品不| 黄色影视在线观看| 久久视频国产| 亚洲一二区在线| 欧美系列电影免费观看 | 蝌蚪视频在线播放| 亚洲精品久久久久久久久久久久 | 久久精品一区二区三区av| 免费的av网站| 波多野洁衣一区| 无码任你躁久久久久久老妇| 国产成人无遮挡在线视频| 五月天六月丁香| 国产精品亚洲视频| 青娱乐国产精品视频| 国产成人精品网址| 国产裸体视频网站| 成人三级伦理片| 一级黄色电影片| 成av人片一区二区| 黄色网址在线视频| 91蝌蚪porny| 中文字幕在线1| 国产精品久久久久久久蜜臀| 又色又爽的视频| 亚洲人妖av一区二区| 91在线播放观看| 亚洲综合视频网| 日韩精品在线不卡| 日本精品一区二区三区高清| 波多野结衣理论片| 在线电影院国产精品| 国产成人久久精品77777综合 | 超碰在线影院| 日韩一区二区在线视频| 成人免费网址| 久久久久久久国产| 亚洲人体影院| 国产免费一区二区三区在线观看| 亚洲伊人精品酒店| 91在线免费看片| 免费看成人人体视频| 欧美一区二区视频17c| 91综合在线| 国产视频在线观看网站| 西西裸体人体做爰大胆久久久| 日本www.色| 国产在线播放一区三区四| 麻豆短视频在线观看| 91女人视频在线观看| 国产精品18在线| 亚洲一区二区三区四区的| wwwxxx亚洲| 欧美日本国产视频| 国产91免费看| 宅男66日本亚洲欧美视频| 26uuu亚洲电影在线观看| 992tv成人免费影院| 日韩国产91| 精品在线视频一区二区| 91久久电影| 国产日产欧美视频| 国产在线看一区| 人妻精品久久久久中文字幕| 亚洲视频图片小说| 久久久久久久久影院| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品首页| 无码人妻久久一区二区三区蜜桃| 久久久国产精华| 国产乡下妇女做爰| 欧美亚洲国产一区在线观看网站| 国产ts变态重口人妖hd| 日韩精品视频观看| 99自拍视频在线观看| 国产极品精品在线观看| 黑人久久a级毛片免费观看| 亚洲三区在线观看| 亚洲在线观看| 日韩精品――色哟哟| 国产精品少妇自拍| 六月丁香激情综合| 精品国产乱码久久久久久久久 | 亚洲深夜福利在线观看| 男人天堂新网址| 久久99热这里只有精品| www.色天使| 五月天国产精品| 国内毛片毛片毛片毛片| 最近2019好看的中文字幕免费| 手机在线理论片| 国产精品久久亚洲| 在线成人直播| 中文字幕在线视频一区二区三区| 国产欧美一区二区精品久导航| 成年人免费高清视频| 亚洲成人av片在线观看| 五月天激情在线| 亚洲天堂中文网| 欧美freesex交免费视频| 久久久久久香蕉| 97se狠狠狠综合亚洲狠狠| 久久老司机精品视频| 在线成人av影院| 色网站免费在线观看| 国产精品高潮视频| 亚洲影院天堂中文av色| 国产精品久久中文字幕| 福利一区二区在线观看| 国产又黄又爽又无遮挡| 91精品久久久久久蜜臀| 在线观看国产原创自拍视频| 国产精品电影网站| 激情五月综合网| 男女视频一区二区三区| 久久久精品欧美丰满| 在线观看 亚洲| 夜夜嗨av色综合久久久综合网| 在线一区视频观看| 午夜一区二区三视频在线观看| 免费久久99精品国产| 自拍偷拍第9页| 91麻豆精品国产自产在线观看一区 | 经典三级在线一区| 亚洲精品自拍视频在线观看| 欧美精品久久一区二区三区| 毛片免费不卡| 92裸体在线视频网站| 狠狠综合久久av一区二区老牛| 好男人香蕉影院| 色狠狠一区二区| 欧美午夜电影一区二区三区| 亚洲一区二区久久久久久 | 欧洲黄色一级视频| 久久综合狠狠综合久久综合88| 婷婷激情五月综合| 中文字幕欧美日韩在线| 国产日韩欧美中文在线| 波多野结衣与黑人| 97国产一区二区| 日本丰满少妇做爰爽爽| 久久精品国产一区二区电影| 91精品国产自产在线丝袜啪| 亚洲熟妇av一区二区三区漫画| 日本一区二区三区在线观看| 国产精品自产拍| 97在线观看免费高清| jiujiure精品视频播放| 三级黄色片免费看| 五月婷婷综合网| 国产h在线观看| 亚洲影院色在线观看免费| 99在线精品视频在线观看| 精品一区二区三区蜜桃在线| 欧美一级在线视频| 忘忧草在线日韩www影院| 亚洲精品乱码久久久久久蜜桃91| 国产成人免费高清| 五月婷婷视频在线| 麻豆国产精品va在线观看不卡 | 亚洲人午夜色婷婷| 精品视频在线观看免费观看| 成年人视频观看| 亚洲你懂的在线视频| 噜噜噜在线观看播放视频| 亚洲精品免费一区二区三区| 久久精品女人天堂| 欧美日韩成人免费观看| 国产一区二区成人| 成人动漫视频| www.夜夜爽| 色偷偷88欧美精品久久久|