我正在嘗試編寫一個抓取工具,以獲取在java中使用正則表達式的站點的菜單項。該網站的網址是 http://www.dinebombaygarden.com/appetizers.html在Java中使用正則表達式的網絡抓取
我怎樣才能得到菜單項目(蔬菜Pakpora,洋蔥或菠菜或土豆Pakora ...)使用模式和匹配?
我的代碼如下,但不是很好。
public ArrayList<String> getMenuItems(String menuURL, String menuRegex) throws IOException{
ArrayList<String> items = new ArrayList<String>();
Document doc = Jsoup.connect(menuURL).post();
String text = doc.body().text();
System.out.println(text);
Pattern pattern = Pattern.compile(menuRegex);
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
items.add(matcher.group());
}
return items;
}
String menuURL = "http://www.dinebombaygarden.com/appetizers.html";
String menuRegex = "[A-Z][a-z]+.{10,50}[$]\\s[\\d.]+.95";
這裏的menuRegex工作不正常。任何人都可以解決這個問題?
非常感謝。
是的,不要使用正則表達式來解析HTML(或XML)。使用HTML解析器來做到這一點。 – 2012-04-24 14:11:57
看看[這個答案](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)。 – dasblinkenlight 2012-04-24 14:13:38
我認爲這是定義明確,簡單到足以通過正則表達式處理。下跪反應不一定總是最好的。 – mellamokb 2012-04-24 14:18:39