gpt4 book ai didi

java - 网络爬虫 URL 结果不准确

转载 作者:行者123 更新时间:2023-12-01 12:26:36 26 4
gpt4 key购买 nike

我刚刚制作了第一个网络爬虫,我的目标只是访问 www.nhl.com,并创建一个包含每个 anchor 和按钮以及它们转发到的 URL 的数据库。

代码似乎工作正常,但我对输出有两个问题。

以下是我的数据库中 URL 条目的两个示例:

1.http://www.nhl.com/ice/event.htm?location=/stadiumseries/2014/chi/responsive

2./ice/m_events.htm

为什么有些记录了整个 URL,而另一些则只记录了第二部分?[已回答]

第二个问题,以该行条目为例:

9 个玩家/ice/m_playersearch.htm,格式为 [id,anchor,url]

当我在浏览器中访问网站并单击“玩家”时,浏览器中的 URL 变为:

http://www.nhl.com/ice/playersearch.htm?navid=nav-ply-plyrs#

其中有我的表格条目没有的 URL 的第二部分 (?navid=nav-ply-plyrs#)

话虽如此,输入数据库提供给我的 URL 最终仍然会将我重定向到同一页面,因此这似乎不是一个错误。我只是想知道为什么/如何确定不需要 URL 的第二部分。

这是我的代码的一部分:

public void crawl(String url){

try{
Document doc = Jsoup.connect(url).get();

Elements pgElem = doc.select("a");
int id = 0;

for(Element e : pgElem){
db.insert(id, e.text(), e.attr("href"));
id++;
}

db.close();

}catch(IOException e){
e.printStackTrace();
}
}

我的插入方法:

 public void insert(int id, String anchor, String url) {

String string = "INSERT INTO nhl (id,Anchor,URL) " + "VALUES (?, ?, ?)";
try {
pst=conn.prepareStatement(string);
pst.setInt(1, id);
pst.setString(2, anchor);
pst.setString(3, url);
pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}

最佳答案

e.attr("href") 更改为 e.attr("abs:href") 以获取绝对网址。

关于java - 网络爬虫 URL 结果不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26283317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com