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

如何使用Lightrun在生產環境中調試jsoup Java代碼

譯文
開發 前端
網站抓?。⊿craping)是一門安全性比較薄弱的學科。人們經常使用服務器來解決,而調試和解決這些問題非常困難,至少現在是這樣。

譯者 | 李睿

審校 | 孫淑娟

網站抓取(Scraping)是一門安全性比較薄弱的學科。人們經常使用服務器來解決,而調試和解決這些問題非常困難,至少現在是這樣。

抓取采用現代瀏覽器構建的網站比十年前更具挑戰性。jsoup是一個方便的API,它通過DOM遍歷、CSS選擇器、類似JQuery的方法等使抓取網站變得簡單。但這并非沒有挑戰,因為每個抓取的API都可能是一顆定時炸彈。

現實世界的HTML是脆弱的。因為它不是一個文檔化的API,所以會在沒有通知的情況下進行更改。當Java程序在抓取方面失敗時,可能就面臨更多的麻煩。在某些情況下,這是一個簡單的問題,可以在本地復制并部署。但在本地測試用例中,DOM樹中的一些細微變化可能更難觀察到。在這些情況下,需要在推動更新之前了解解析樹中的問題。否則,開發的軟件產品可能會損壞。

什么是jsoup?JavaHTML解析器

在深入了解調試jsoup的具體細節之前,先回答上面的問題,并討論jsoup背后的核心概念。

jsoup網站將其定義為:jsoup是一個用于處理真實世界HTML的Java庫。它使用HTML5 DOM方法和CSS選擇器提供了一個非常方便的API,用于獲取URL以及提取和操作數據。

jsoup實現了WHATWG HTML5規范,并將HTML解析為與現代瀏覽器相同的DOM。

考慮到這一點,可以直接從同一個網站上獲取一個簡單的示例:

Java

1 Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
2 log(doc.title());
3 Elements newsHeadlines = doc.select("#mp-itn b a");
4 for (Element headline : newsHeadlines) {
5 log("%s\n\t%s",
6 headline.attr("title"), headline.absUrl("href"));
7 }

這段代碼片段摘自維基百科的標題。在上面的代碼中,可以看到幾個有趣的特性:

  • 與URL的連接實際上是無縫的——只需將字符串URL傳遞給connect方法。
  • 某些子元素有特殊情況。例如。Title被公開為一個簡單的方法,它返回一個字符串而不從DOM樹中選擇。
  • 可以使用非常復雜的選擇器語法來選擇條目。

簡單的jsoup測試

為了演示調試,創建了一個簡單的演示。

XML

1  <dependency>
2 <groupId>org.jsoup</groupId>
3 <artifactId>jsoup</artifactId>
4 <version>1.14.3</version>
5 </dependency>

可以使用以下Maven依賴項將jsoup安裝到任何Java程序中。Maven將無縫下載jsoupjar:

Java

1 public Set<String> listLinks(String url, boolean includeMedia) throws IOException {
2 Document doc = Jsoup.connect(url).get();
3 Elements links = doc.select("a[href]");
4 Elements imports = doc.select("link[href]");
5
6 Set<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
7 if(includeMedia) {
8 Elements media = doc.select("[src]");
9 for (Element src : media) {
10 result.add(src.absUrl("src"));
11 //result.add(src.attr("abs:src"));
12 }
13 }
14
15 for (Element link : imports) {
16 result.add(link.absUrl("abs:href"));
17 }
18
19 for (Element link : links) {
20 result.add(link.absUrl("abs:href"));
21 }
22
23 return result;
24 }

本段代碼可以獲取輸入的字符串URL。也可以使用輸入流,但這在解析相對URL時會稍微復雜一些(無論如何都需要一個基本URL)。然后搜索具有src屬性的鏈接和對象。最后代碼將它們全部添加到一個集合中,以保持條目的排序和唯一性。

我們使用以下代碼將其公開為Web服務:

1 @RestController
2 public class ParseLinksWS {
3 private final ParseLinks parseLinks;
4
5 public ParseLinksWS(ParseLinks parseLinks) {
6 this.parseLinks = parseLinks;
7 }
8
9 @GetMapping("/parseLinks")
10 public Set<String> listLinks(@RequestParam String url, @RequestParam(required = false) Boolean includeMedia) throws IOException {
11 return parseLinks.listLinks(url, includeMedia == null ? true : includeMedia);
12 }
13 }

一旦運行應用程序,就可以通過一個簡單的curl命令使用它:

Java

1 curl -H "Content-Type: application/json" "http://localhost:8080/parseLinks?url=https%3A%2F%2Flightrun.com"

這將打印出Lightrun主頁中引用的URL列表。

調試內容失敗

當元素對象更改時,會出現典型的字符串抓取問題。例如,維基百科可以更改其頁面的結構,而上面的選擇方法可能會失敗。這通常是一個微妙的失敗,是在處理嵌套節點元素和文檔間依賴關系時。例如Java對象層次結構中缺少DOM元素,這可能會觸發選擇方法的失敗。大多數開發人員通過記錄大量數據來解決這個問題。產生這個問題的原因有三個:

  • 日志數據量大——它們既難以閱讀,又非常昂貴。
  • 隱私/GDPR違規——被抓取的網站可能包含特定用戶的私人信息。
  • 在最初實施抓取之后,抓取的站點可能會更改為包含私人信息。記錄這些私人信息可能會違反各種隱私法規。

如果沒有足夠的日志并且無法在本地重現問題,就會陷入到添加日志、構建、測試、部署、重現這樣的重復循環中。

Lightrun提供了一種更好的方法。只需直接在生產中跟蹤特定故障、驗證問題,并創建適用于一個部署的修復程序。

注:本文假設安裝了Lightrun并了解其背后的基本概念。如果沒有,可以查看文檔。

在瀏覽器DOM中找到自己的方式

假設不知道從何開始,那么jsoup API是一個很好的起點。它可以帶回用戶代碼。很酷的是,無論代碼如何都會有效。通過深入研究API調用,可以找到快照的正確行/文件。

在此處按ctrl鍵(在Mac上使用Meta-click)選擇方法調用:

Java

1 Elements links = doc.select("a[href]");

它帶到了Element類。在其中,按ctrl鍵單擊選擇器“select”方法,可以放置一個條件快照來查看每個執行“a[href]”查詢的情況:

這可以顯示執行該查詢的方法/行:

這對縮小文檔對象層次結構中的一般問題區域有很大幫助。

有時采用快照可能還不夠,可能需要使用日志。日志記錄的優點是可以生成大量信息,但僅針對特定情況和按需生成。

日志的價值在于,它們能夠以非常類似于單步執行代碼的方式跟蹤問題。放置快照的位置對于日志來說是有問題的。我們知道發送的查詢,但還沒有返回的值??梢杂萌罩据p松解決這個問題。首先,添加一個包含以下文本的日志:

"Executing query {query}"

然后,要找出返回了多少條目,只需轉到調用者(我們知道這要歸功于快照中的堆棧)并在那里添加以下日志:

Links query returned {links.size()}

這會產生以下日志,讓我們看到有147個a[href]鏈接。這樣做的好處是額外的日志與場景中預先存在的日志交錯:

Feb 02, 2022 11:25:27 AM org.jsoup.select.Selector select
INFO: LOGPOINT: Executing query a[href]
Feb 02, 2022 11:25:27 AM com.lightrun.demo.jsoupdemo.service.ParseLinks listLinks
INFO: LOGPOINT: Links query returned 147
Feb 02, 2022 11:25:27 AM org.jsoup.select.Selector select
INFO: LOGPOINT: Executing query link[href]
Feb 02, 2022 11:25:27 AM org.jsoup.select.Selector select
INFO: LOGPOINT: Executing query [src]

避免安全和GDPR問題

GDPR和安全問題可能是將用戶信息泄漏到日志中的問題。這可能是一個主要問題,Lightrun可以幫助顯著降低這種風險。

Lightrun提供了兩種可能的解決方案,可以在適用時串聯使用。

(1)日志管道

GDPR的最大問題是日志攝取。如果記錄私人用戶數據,然后將其發送到云端,它會在那里保存很長時間,并且事后很難找到,也很難修復。

Lightrun提供了將Lightrun的所有注入日志直接通過管道傳輸到IDE的能力。這樣做的好處是可以消除可能使用日志的其他開發人員的干擾。它還可以跳過攝取(可選)。

如果僅將日志發送到插件,需要將管道模式選擇為“插件”。

(2)PII減少/阻止列表

個人身份信息(PII)是GDPR法規的核心,也是一個主要的安全風險。而企業中的惡意開發人員可能希望使用Lightrun來竊取用戶信息。阻止列表阻止開發人員在特定文件中放置操作。

驗證個人身份信息(PII) 可以減少從日志中隱藏匹配特定模式的信息(例如信用卡格式等)。這可以由管理員角色在Lightrun Web界面中定義。

結語

對于Java內容抓取,jsoup顯然是領導者。使用jsoup進行開發遠遠超過字符串操作,甚至在處理連接方面。除了獲取文檔對象外,它還處理DOM元素和腳本所需的復雜方面。

抓取是一項有風險的業務。當網站發生輕微變化時,它可能會在眨眼間崩潰。更糟糕的是,它可能會以奇怪的方式影響某些用戶,而這些方式不可能在本地復制。

而有了Lightrun,可以直接在生產環境中調試此類故障,并快速發布工作版本。

原文標題:??Debugging jsoup Java Code in Production Using Lightrun??,作者:Shai Almog


責任編輯:華軒 來源: 51CTO
相關推薦

2011-09-19 10:43:19

Nuget

2022-09-04 21:17:03

高可用Linkerd

2021-12-03 07:27:29

EFCore生產環境

2020-02-25 15:47:05

ElasticsearLucene地方

2015-08-03 09:08:29

2015-10-28 16:20:10

短生命周期容器原生云計算

2020-12-25 09:00:00

Kubernetes容器開發

2020-09-14 15:30:23

開發技能代碼

2019-09-18 20:46:57

容器生產環境數據中心

2025-07-30 04:00:00

2020-11-23 07:56:08

Vue生產環境

2023-11-14 17:40:32

2015-11-20 15:28:36

AWSGoAWS SDK for

2012-02-07 09:56:06

無代理防毒產品

2018-11-20 10:10:54

Redis數據庫模糊查詢

2010-03-05 10:31:24

Ubuntu PHP

2009-06-03 14:42:21

Eclipse調試調試Java程序

2010-09-08 15:19:46

生產環境性能測試風險

2025-01-03 16:29:03

2021-03-15 06:23:40

GDB調試代碼編程語言
點贊
收藏

51CTO技術棧公眾號

日韩精品影音先锋| 中文字幕不卡在线观看| 午夜精品国产精品大乳美女| 久久久久久久无码| 国产综合色在线观看| 日韩久久一区二区| 久久av一区二区三区亚洲| 中日韩在线观看视频| 国产精品hd| 中文字幕日韩av综合精品| 日本天堂在线播放| 成人国产精品| 欧美日韩精品二区| 国产精品亚洲天堂| 精品推荐蜜桃传媒| 丰满少妇久久久久久久| 国产精品久久综合av爱欲tv| 欧美日韩偷拍视频| 999久久久免费精品国产| 精品成人一区二区三区四区| 九九热99视频| 新片速递亚洲合集欧美合集| 亚洲图片自拍偷拍| 偷拍盗摄高潮叫床对白清晰| 久久久久久女乱国产| 国产成人亚洲综合色影视| 国产乱人伦真实精品视频| 日韩精品久久久久久久酒店| 中文不卡在线| 色99之美女主播在线视频| 成人免费av片| 久久99偷拍| 欧美大片国产精品| 亚洲涩涩在线观看| 日韩精品第一| 色婷婷av久久久久久久| 激情深爱综合网| 金瓶狂野欧美性猛交xxxx| 亚洲嫩草精品久久| 一区二区不卡在线观看| 高清性色生活片在线观看| 91麻豆国产香蕉久久精品| 精品欧美一区二区三区久久久 | 色综合久久88色综合天天免费| 91亚洲精品国产| 色呦呦在线看| 亚洲综合免费观看高清在线观看| www.亚洲一区二区| gogo在线高清视频| 亚洲日本青草视频在线怡红院| 天天综合狠狠精品| jyzzz在线观看视频| 久久九九久久九九| 日韩欧美亚洲日产国| 噜噜噜在线观看播放视频| 久久久久久9999| 日本一区精品| yw视频在线观看| 国产精品日韩成人| 这里只有精品66| 超碰电影在线播放| 亚洲狠狠丁香婷婷综合久久久| 中文字幕乱码免费| 亚洲国产精品精华素| 亚洲成人免费av| 天堂…中文在线最新版在线| 一区二区精品伦理...| 91国偷自产一区二区开放时间 | 国产一区二区成人| 久久丫精品忘忧草西安产品| 操欧美老女人| 久久精品国产v日韩v亚洲| 九九热视频在线免费观看| 欧美在线国产| 91国产在线精品| 欧美a视频在线观看| 蜜桃av噜噜一区二区三区小说| 国产欧美 在线欧美| 国产婷婷一区二区三区久久| 成人性生交大片免费| 久久国产欧美精品| 天天影视久久综合| 亚洲国产精品久久久久婷婷884| 777av视频| 3d性欧美动漫精品xxxx软件| 欧美日本在线播放| 在线观看免费视频国产| 精品中文一区| 久久久精品久久久久| 日本中文字幕免费观看| 美女精品自拍一二三四| 99精品国产一区二区| 男人的天堂在线视频| 日韩理论在线观看| 日韩精品一区中文字幕| 欧美成人精品午夜一区二区| 亚洲免费电影一区| 曰本女人与公拘交酡| 久久永久免费| 国产精品二区在线观看| 国产最新视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 99视频在线免费播放| 精品福利在线| 亚洲乱码av中文一区二区| 欧美一区免费观看| 丝袜脚交一区二区| 国产精品久久一区二区三区| 中国美女黄色一级片| 久久黄色美女电影| 亚洲制服丝袜在线| 黄色手机在线视频| 亚洲aa在线| 欧美精品国产精品日韩精品| 中文字幕久久久久| 91免费视频观看| 国产xxxx振车| 国产日韩一区二区三免费高清| 亚洲精品一区二区三区不| 久久亚洲精品大全| 久久99久久99精品免视看婷婷| 免费看成人午夜电影| 免费大片在线观看www| 色就色 综合激情| 午夜久久久久久久| 欧美日韩1区| 147欧美人体大胆444| av资源在线观看免费高清| 欧美日韩一区二区三区在线免费观看| 三上悠亚 电影| 午夜av一区| 国产精品一区二区女厕厕| 欧美偷拍视频| 欧美日韩美女在线观看| 少妇极品熟妇人妻无码| 亚洲女同中文字幕| 成人网欧美在线视频| avtt在线播放| 欧美性做爰猛烈叫床潮| 国产女主播喷水高潮网红在线| 一本色道久久综合亚洲精品高清 | 黄色精品一区二区| caopor在线| 在线观看黄av| 亚洲va韩国va欧美va精品| 在线播放免费视频| 99久久精品费精品国产风间由美| 国产精品女人久久久久久| 国产午夜在线观看| 日本久久电影网| 黄免费在线观看| 日韩精品亚洲一区| 涩涩涩999| 欧美色片在线观看| 中文在线不卡视频| 91黄色在线视频| 国产精品不卡在线| 亚洲无在线观看| 欧美在线亚洲| 国产精品一区二区三区在线| 678在线观看视频| 亚洲精品国产欧美| 亚洲大尺度在线观看| 国产精品私人影院| 免费精品99久久国产综合精品应用| 国产精品成人a在线观看| 亚洲自拍小视频| 久久青青色综合| 亚洲电影第1页| 国产三级精品三级在线观看| 中文字幕欧美区| 亚洲男人天堂2021| 亚洲精品少妇| 日韩偷拍一区二区| 国产一区二区三区免费观看在线| 欧美日本亚洲视频| 每日更新在线观看av| 在线成人高清不卡| 日韩xxxxxxxxx| 国产亚洲欧美日韩在线一区| 国产九九热视频| 国产一区二区三区自拍| 欧美大香线蕉线伊人久久国产精品 | 牛夜精品久久久久久久99黑人| 国产精品啪视频| 污视频在线免费观看网站| 日韩大陆欧美高清视频区| 乱子伦一区二区三区| 亚洲精品精品亚洲| 一本色道久久综合亚洲精品图片| 日本不卡视频在线观看| 人妻无码一区二区三区四区| 啄木系列成人av电影| 亚洲va欧美va在线观看| 免费一二一二在线视频| 久久精品国产成人| 六十路在线观看| 日韩美一区二区三区| 中文字幕在线观看视频免费| 一区二区免费视频| 男人的天堂官网| 成人性生交大合| 色综合五月婷婷| 久久久久久穴| 777av视频| 这里只有精品在线| 亚洲人成人77777线观看| 噜噜噜狠狠夜夜躁精品仙踪林| 国产日韩精品在线| 澳门成人av网| 97福利一区二区| 91亚洲天堂| 日韩最新av在线| 欧美日韩视频精品二区| 亚洲成人黄色在线观看| 国产精品久久影视| 欧美在线观看一区| 天堂网av手机版| 亚洲综合色在线| 欧美黄色aaa| 国产精品毛片久久久久久久| 国产精品九九九九九| 国产aⅴ综合色| 99精品视频国产| 美女mm1313爽爽久久久蜜臀| 日韩欧美黄色大片| 亚洲一区国产| r级无码视频在线观看| 亚洲理论电影网| 一本色道婷婷久久欧美| 欧美日韩在线网站| 欧美午夜免费| 久久av综合| 欧美凹凸一区二区三区视频| 欧亚精品一区| 久精品国产欧美| 日韩av资源网| 精品综合久久久| 久久影视三级福利片| 国产精品对白一区二区三区| av成人app永久免费| www.久久久| 成人中文字幕视频| 国产伦精品一区二区三区视频孕妇 | 综合国产视频| 国产精品一区二区欧美| 精品久久ai电影| 狠狠色综合一区二区| 欧美wwwwww| 久久一区二区精品| 久久不见久久见国语| 日韩激情视频| 日韩欧美大片| 久久久国产精华液999999| 999精品一区| 欧洲金发美女大战黑人| 国内揄拍国内精品久久| 人妻无码久久一区二区三区免费| 亚洲精品社区| 国产精品亚洲二区在线观看| 日韩中文字幕区一区有砖一区| 免费看污黄网站| 极品少妇xxxx精品少妇偷拍| 黄色三级视频在线播放| 国产大片一区二区| 香港三日本8a三级少妇三级99| av亚洲精华国产精华| 久久亚洲AV无码专区成人国产| 国产日本欧洲亚洲| 中文乱码字幕高清一区二区| 亚洲精品水蜜桃| 亚洲精品男人天堂| 欧洲精品在线观看| 精品人妻久久久久一区二区三区 | 中文字幕被公侵犯的漂亮人妻| 国产精品欧美经典| 激情五月少妇a| 一本久久a久久精品亚洲| 又污又黄的网站| 日韩你懂的电影在线观看| 午夜视频免费在线| 国产一区二区三区18| 在线电影福利片| 日韩av电影免费观看高清| 欧洲精品久久久久毛片完整版| 91九色在线观看| 国产日产一区 | 亚洲女人av| 999在线精品视频| 99精品桃花视频在线观看| 69精品无码成人久久久久久| 亚洲精品视频在线| 日本中文字幕第一页| 欧美高清视频不卡网| 日本免费不卡视频| 色偷偷噜噜噜亚洲男人| 99re6在线精品视频免费播放| 国产精品久久久久久久久借妻| 视频一区中文字幕精品| 日韩女优中文字幕| 亚洲激情婷婷| 亚洲第一天堂久久| 国产亚洲一区二区三区在线观看| 中文字幕电影av| 91国内精品野花午夜精品| 亚洲奶汁xxxx哺乳期| 国产香蕉一区二区三区在线视频| 丁香花视频在线观看| 成人午夜在线视频一区| 九九热线有精品视频99| 亚洲 欧美 综合 另类 中字| 国产在线精品一区二区不卡了| 我和岳m愉情xxxⅹ视频| 亚洲一区二区三区视频在线| 一区精品在线观看| 亚洲视频777| 国模私拍一区二区国模曼安| 96久久精品| 天天天综合网| 视色视频在线观看| 久久久久成人黄色影片| 日韩免费不卡视频| 日韩美一区二区三区| 国产午夜精品久久久久免费视| 国产精品99久久久久久人| 丝袜美腿一区二区三区动态图| 日韩成人手机在线| 国产精品 日产精品 欧美精品| 波多野结衣一二三四区| 色av成人天堂桃色av| 天堂v视频永久在线播放| 午夜精品蜜臀一区二区三区免费| 亚洲成人五区| 日韩亚洲欧美一区二区| 国产在线乱码一区二区三区| 国产麻豆a毛片| 欧美高清视频一二三区| 快射av在线播放一区| 国产精品亚洲视频在线观看| 欧美裸体在线版观看完整版| 国产日韩一区二区在线观看| 91亚洲精华国产精华精华液| 日韩三级免费看| 日韩电影免费观看在线观看| 美女网站在线看| 欧美二区三区在线| 日韩电影在线看| www.xx日本| 9191久久久久久久久久久| free性欧美hd另类精品| 99国产精品久久久久老师| 亚洲性感美女99在线| 国产极品一区二区| 疯狂做受xxxx欧美肥白少妇| 色视频在线观看| 国产精品jizz在线观看麻豆| 成人羞羞网站入口免费| 中文字幕丰满乱码| 亚洲精品视频在线看| 日本国产在线观看| 日本久久久久亚洲中字幕| 精品大片一区二区| 一区二区免费av| 一区二区三区不卡视频| 天天操天天舔天天干| 日韩av片电影专区| 91欧美日韩| 精品伦一区二区三区| 欧美视频在线看| 五月天婷婷在线视频| 99视频日韩| 午夜亚洲视频| 久草福利资源在线| 欧美精品一区二区三区久久久| 中文字幕在线视频久| 四虎一区二区| 国产成人精品影院| 日日夜夜狠狠操| 久久亚洲影音av资源网| 黑人久久a级毛片免费观看| 99久久国产宗和精品1上映| 国产精品私人自拍| 国产综合视频在线| 国产精品高潮呻吟久久av野狼| 亚洲中无吗在线| 日本免费福利视频| 欧美人狂配大交3d怪物一区| 国产精品蜜臀| 色一情一乱一伦一区二区三欧美| 国产一区二区三区四区五区入口| 久久青青草视频| 久久久av一区| 妖精视频一区二区三区免费观看| 国产精品视频中文字幕| 亚洲图片自拍偷拍| 91福利在线视频| 久久婷婷开心| 国产裸体歌舞团一区二区| 国产午夜麻豆影院在线观看| 欧美精品久久久久久久|