Я занимаюсь разработкой веб-искателя, но я застрял, потому что я не могу получить все достижимые ссылки, вот мой код:Web Crawler с помощью jsoup
public class SNCrawler extends Thread {
Specific s;
HashSet<String> hs = new HashSet<String>();
public SNCrawler(Specific s)
{
this.s = s;
}
public void crawl(String url) throws IOException {
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a");
for (Element link : links)
{
if(isSuitable(link.attr("href")) && !hs.contains(link.attr("abs:href")))
{
hs.add(link.attr("href"));
crawl(link.attr("href"));
}
}
}
public boolean isSuitable(String site)
{
boolean myBool = false;
if(site.startsWith("http://www.svensktnaringsliv.se/") && !SNFilter.matcher(site).matches())
if(site.contains(".pdf")) {
hs.add(site);
myBool=true;
}else{
hs.add(site);
myBool=true;
}
return myBool;
}
private static final Pattern SNFilter = Pattern.compile(".*((/staff/|medarbetare|play|/member_organizations/|/sme_committee/|rm=print|/contact/|/brussels-office/|/about-us|/newsletter/|/advantagesweden/|service=print|#)).*");
@Override
public void run()
{
try {
crawl("http://www.svensktnaringsliv.se/english/");
for(String myS : hs)
{
System.out.println(myS);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
, когда программа достигает this часть сайта это Безразлично получить какую-либо ссылку с там, одними и теми же вещами для this страницы, оттуда я получаю только 2 или 3 ссылки, я посмотрел на коде в течение многих часов, но наклоняет действительно figute его, почему я застрял
Я не использовал jsoup раньше, так что не могу дать вам ответ, я боюсь, но было интересно, почему вы не просто использовать что-то вроде регулярных выражений и ПГПС 'preg_match_all'. '/ <А \ с HREF = [" || '] ([A-Za-Z0-9 \ - \/\.?: \ \ # \ \ & \% \ =] +) (*.)? [ «|| '] /' должен захватить все ссылки в документе. Вы можете использовать 'curl' или даже просто' file_get_contents', если сервер разрешает его, помогите в этом [здесь] (http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url) –
Извините, это более точный шаблон (или так я нашел) '/ ] * href = [\" || \ '] ([^ \ "\'] *) [\" || \ '] [ ^>] *>/ixgU' –