我尝试连接到site,从中获取链接,然后访问for
周期中的每个链接并从中存储一些信息。但是,在尝试访问内部站点(org.jsoup.HttpStatusException: HTTP error fetching URL. Status=503
函数内部)时出现getAddress()
错误。我尝试设置超时和更改用户代理,但它只是不起作用。单独访问其中一些网站确实有效。
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.ArrayList;
public class Parser {
public static void main(String[] args) throws IOException {
String url="http://www.patriarchia.ru/db/organizations/";
String homeUrl="http://www.patriarchia.ru";
Document document = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36").get();
Elements links = document.getElementsByClass("news");
ArrayList<Company> companies=new ArrayList<Company>();
int i=1;
for (Element link : links) {
Company companyCopy=new Company(link.text());
Element title = link.getElementsByClass("title").get(0).getElementsByTag("a").get(0);
String siteUrl=title.attr("href");
companyCopy.setSite(homeUrl+siteUrl);
getAddress(companyCopy.getSite());
i++;
}
}
public static String getAddress(String url) throws IOException {
Document document = Jsoup
.connect(url)
.ignoreContentType(true)
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").get();
Elements dts = document.getElementsByClass("dt");
Element dd;
for (Element dt: dts) {
System.out.println(dt.text());
}
return "";
}
}
我真的会在这里使用一些帮助,因为我不知道还能做些什么。更改超时长度似乎也没有帮助。我欢迎任何想法和建议。
PS没关系语言,链接在主页上,这一切都非常重要。