- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 jsoup(使用这个 tutorial)在 Java 中制作网络爬虫。
我面临的问题是爬虫将每个链接都带入元素循环,其中一些是电子邮件地址。因此,当我尝试在电子邮件地址上使用 Jsoup.connect(URL)
时,我收到一条错误消息,告诉我只能使用 http 或 https 请求。
如何在获取电子邮件地址链接时停止我的程序进行递归?
主要代码如下:
public class Main {
public static DB db = new DB();
public static void main(String[] args) throws SQLException, IOException{
db.runSql2("TRUNCATE Record;");
processPage("http://www.mit.edu");
}
public static void processPage(String URL) throws SQLException,IOException{
String sql = "select * from Record where URL = '" +URL+"'";
ResultSet rs = db.runSql(sql);
if(rs.next()){
} else {
sql = "INSERT INTO `Crawler`.`Record` " + "(`URL`) VALUES " + "(?);";
PreparedStatement stmt = db.conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.setString(1,URL);
stmt.execute();
Document doc = Jsoup.connect(URL).get();
if(doc.text().contains("research")){
System.out.println(URL);
}
Elements questions = doc.select("a[href]");
for(Element link:questions){
if(link.attr("href").contains("mit.edu")){
System.out.println(link.attr("abs:href"));
processPage(link.attr("abs:href"));
}
}
}
}
最佳答案
您可以通过查看链接是否以 http
开头来检查链接是否为 URL。因为您有一个绝对 URL(使用 abs:href
),并且它以 http 开头,所以它只能是 http 或 https URL(而不是电子邮件地址的链接,或FTP 站点,包含一些您不想要的其他垃圾。)
例如,将您的 for 循环更新为:
for (Element link : questions) {
String href = link.attr("abs:href");
if (href.contains("mit.edu") && href.startsWith("http")) {
System.out.println(href);
processPage(href);
}
}
此外,我倾向于在每个 processPage
调用周围放置一个 try/catch,这样如果您在获取页面时遇到错误(例如网络超时或其他原因),您的整个应用程序都不会不会崩溃。
关于java - Web Crawler 在电子邮件链接上被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793580/
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我最近在准备面试时读了一本书,并遇到了以下问题: 当你的爬虫遇到一个蜜 jar 并生成一个无限子图供你漫步时,你会怎么做? 我想找到这个问题的一些解决方案。就我个人而言,我会采用某种形式的深度有限搜索
我需要抓取一千个共享相同结构的网站:它们都有一个菜单、一个标题、一些文本和一个评级,很像一个博客。不幸的是,它们的编码也非常不同,有些是手动的,所以我不能重新利用 CSS 选择器,甚至可能不依赖它们。
我正在尝试抓取大约一千个网站,其中我只对 html 内容感兴趣。 然后我将 HTML 转换为 XML 以使用 Xpath 进行解析以提取我感兴趣的特定内容。 我已经使用 Heritrix 2.0 爬虫
我想从某些网站抓取有用的资源(如背景图片..)。这不是一项艰巨的工作,尤其是在一些很棒的项目(如scrapy)的帮助下。 这里的问题是我不仅只想抓取这个网站一次。我还想保持我的爬网长时间运行并爬网更新
我是 Nutch 的新手。我需要抓取网页(比如几百个网页),读取抓取的数据并进行一些分析。 我点击了链接 https://wiki.apache.org/nutch/NutchTutorial (并且
我要爬一个网站以获取一些信息。它大约有 170 000 多页。那么,我可以提出多少请求?我要提取直到 HTML 并获取一些信息。这是一个已经很受欢迎的网站,所以我认为如果只是快速浏览所有页面它不会死.
我正在构建一个小型应用程序,它将抓取内容不断增长的站点(如在 stackoverflow 上),不同之处在于一旦创建的内容很少被修改。 现在,在第一遍中,我抓取了站点中的所有页面。 但接下来,该站点的
我在比较这四个 Nutch/Heritrix/OpenPipeLine/Apache Tika 哪一个最好?各自的优缺点是什么? 我想要一些可扩展的爬虫,它可以爬取网站列表,并且可以根据需要进行修改。
正如标题所说,我一直在努力爬取文章,剩下的就是作者。 下面是我的代码,使用pyquery编译段落和作者,只有作者返回空白 目标站点:http://business.transworld.net/153
我正在为旅游搜索引擎考虑一些想法,我想知道这些网站是如何获取它们的源数据的。他们是否从航空公司主页上抓取了所有内容?考虑到航空公司等的数量,这似乎是一项艰巨的工作。 是否有每个航空公司也遵守的 API
我正在测试一个新的网络爬虫,我正在寻找一些可能会绊倒它的好网站(重定向、框架、任何东西)。有人知道一些非常复杂的网站,或者可能会出错的网站吗?谢谢 最佳答案 如果你在 Alexa 前 1000 名左右
有一种方法可以从 google 的索引中排除完整的页面。但是有没有办法专门从谷歌的抓取中排除网页的某些部分?例如,排除通常包含不相关内容的侧边栏? 最佳答案 您可以使用 IFRAME 标记包含要在 G
给定一个起始 URL start (以及关于可允许域等的一些规则)我想生成一个有向图(V,E),其中 V 中的节点是否可以从 start 访问页面,并且有一条弧线 (u,v)在 E每当页面上有超链接时
我正在开发一个Web爬网程序,该爬网程序可以为不想被索引的网站编制索引。 我的第一次尝试: 我编写了一个C#搜寻器,它遍历每个页面并下载它们。 这导致我的IP在10分钟内被其服务器阻塞。 我将其移至A
我想知道用于抓取和分析网站的最佳 eopen-source 库是什么。一个例子是爬虫属性(property)机构,我想从多个站点获取信息并将它们聚合到我自己的站点中。为此,我需要抓取网站并提取属性(p
Builtwith.com 和类似服务提供(收费)使用特定技术(如 SalesForce 或 NationBuilder)构建的域列表。有一些我感兴趣的技术 builtwith 没有扫描,可能是因为它
我正在使用scrapy 来抓取站点上的多个页面。 变量 start_urls用于定义要抓取的页面。 我最初会从第一页开始,从而定义 start_urls = [1st page]在文件中 exampl
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我有一个实现无限滚动的网站:当用户到达页面末尾时,会进行 AJAX 调用并将新内容附加到页面底部。然而,这意味着搜索爬虫无法获取第一个“分页符”之后的所有内容。例如,我有一个页面列出了所有带有“信息图
我是一名优秀的程序员,十分优秀!