Javada Regex İle Url Çekmek
-
Merhaba muridler Arraylist oluşturup regex ile bunun için link listesi oluşturmak istiyorum yalnız şöyle bir şey var
<div class="link">
<a href="#">test</a></div>
çektiğim html kodunda da bu tarz bir link yapısı var bende şöyle bir kısıtlama yapmak istiyorum class'ı link olan divlerin içeriğini çekip link listesi oluşturmak istiyorum bazı regex kodları var ama html content'in tamamından linkleri çıkarıyor istediğim gibi bir yapı çıkaramadı bu konu üzerinde daha önce çalışmış olan muridler varsa bir el atabilir mi ?
-
Regex ile olmaz, aslında yapmaya müsait recursive özellikleri olan çeşitli flavor'lar ama hiç biri tam olarak HTML parse etmek için uygun değil ki senin HTML parse etmen lazım. Bu yüzden DOM üzerinden sorgulama / adresleme yapabileceğin bir HTML Parser kullan. Java'dan hiç anlamam şöyle bir şey buldum hemen : http://jsoup.org/
Denemedim ama sayfadaki örneğe bakılırsa o tür linkleri listeyebileceğin bir kod herhalde şöyle olur :
Document doc = Jsoup.connect("http://site.com/").get(); Elements linkler = doc.select("div.link a"); for (Element link : linkler) { print("%s", link.attr("href")); }
-
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
(?i)<div[\s\S]*?class="link"[\s\S]*?>[\s\S]*?<a[\s\S]*?href="([\s\S]*?)"[\s\S]*?>
-
Daft bunu yazdı
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html
(?i)<div[\s\S]*?class="link"[\s\S]*?>[\s\S]*?<a[\s\S]*?href="([\s\S]*?)"[\s\S]*?>
1. Birden fazla link almaya çalışılıyor olabilir.
2. Bu div'lerden birden fazla olabilir.
3. <div etiketinden hemen sonra a etiketi yerine başka bir etiket olabilir.
HTML işte. Bunun gibi daha bir sürü muhtemel sıkıntıya gebe.
Bu yüzden Regex ile HTML parse edilemez, hata HTML'i boşverelim, CSV parse etmek için bile uygun değil.
Şöyle bir kaç da link vereyim:
http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html
http://programmers.stackexchange.com/questions/113237/when-you-should-not-use-regular-expressions