我对这个网络抓取非常新.我正在使用crawler4j来抓取网站.我通过抓取这些网站收集所需的信息.我的问题是我无法抓取以下网站的内容.http://www.sciencedirect.com/science/article/pii/S1568494612005741.我想从上述网站抓取以下信息(请查看附带的屏幕截图).

如果您观察到附加的屏幕截图,则它有三个名称(在红色框中突出显示).如果单击其中一个链接,您将看到一个弹出窗口,该弹出窗口包含有关该作者的全部信息.我想抓取该弹出窗口中的信息.
我使用以下代码来抓取内容.
public class WebContentDownloader {
private Parser parser;
private PageFetcher pageFetcher;
public WebContentDownloader() {
CrawlConfig config = new CrawlConfig();
parser = new Parser(config);
pageFetcher = new PageFetcher(config);
}
private Page download(String url) {
WebURL curURL = new WebURL();
curURL.setURL(url);
PageFetchResult fetchResult = null;
try {
fetchResult = pageFetcher.fetchHeader(curURL);
if (fetchResult.getStatusCode() == HttpStatus.SC_OK) {
try {
Page page = new Page(curURL);
fetchResult.fetchContent(page);
if (parser.parse(page, curURL.getURL())) {
return page;
}
} catch (Exception e) {
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个爬虫来从供应商网站中提取一些我可以针对我们的内部属性数据库进行审核的属性数据,并且是import.io的新手.我观看了一堆视频,但虽然我的语法似乎是正确的,但我的手动xpath覆盖不会返回属性值.我有以下示例html代码:
<table>
<tbody><tr class="oddRow">
<td class="label"> Adhesive Type‎</td><td> Epoxy‎
</td>
</tr>
<tr>
<td class="label"> Applications‎</td><td> Hard Disk Drive Component Assembly‎
</td>
</tr>
<tr class="oddRow">
<td class="label"> Brand‎</td><td> Scotch-Weld‎
</td>
</tr>
<tr>
<td class="label"> Capabilities‎</td><td> Sustainability‎
</td>
</tr>
<tr class="oddRow">
<td class="label"> Color‎</td><td> Clear Amber‎
</td>
Run Code Online (Sandbox Code Playgroud)
我试图在sibling语句之后写一个xpath来通过import.io爬虫抓取"Color".选择"Color"时的xpath代码是:
//*[@id="attributeList"]/table/tbody/tr[5]/td[1]
Run Code Online (Sandbox Code Playgroud)
我试过用:
//*[@id="attributeList"]/table/tbody/tr/td[.="Color"]/following-sibling::td
Run Code Online (Sandbox Code Playgroud)
但它并没有从表中获取颜色属性值.我不确定它是否与奇数和偶数行类有关?当我看到HTML时,它似乎具有逻辑意义; color是"Color",属性值位于以下td括号中.
我正在尝试使用crawler4j中的基本爬虫示例.我把代码从crawler4j网站在这里.
package edu.crawler;
import edu.uci.ics.crawler4j.crawler.Page;
import edu.uci.ics.crawler4j.crawler.WebCrawler;
import edu.uci.ics.crawler4j.parser.HtmlParseData;
import edu.uci.ics.crawler4j.url.WebURL;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.http.Header;
public class MyCrawler extends WebCrawler {
private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|bmp|gif|jpe?g" + "|png|tiff?|mid|mp2|mp3|mp4"
+ "|wav|avi|mov|mpeg|ram|m4v|pdf" + "|rm|smil|wmv|swf|wma|zip|rar|gz))$");
/**
* You should implement this function to specify whether the given url
* should be crawled or not (based on your crawling logic).
*/
@Override
public boolean shouldVisit(WebURL url) {
String href = url.getURL().toLowerCase();
return !FILTERS.matcher(href).matches() && href.startsWith("http://www.ics.uci.edu/");
}
/**
* …Run Code Online (Sandbox Code Playgroud) 我希望在Groovy中开发一个Web爬虫(使用Grails框架和MongoDB数据库),它能够抓取网站,创建站点URL列表及其资源类型,内容,响应时间和涉及的重定向数量.
我正在讨论JSoup vs Crawler4j.我已经阅读了他们基本上做了什么,但我无法理解两者之间的区别.任何人都可以建议哪个更适合上述功能?或者比较两者完全不正确?
谢谢.
我想设置抓取工具抓取一个网站,比如说博客,然后只获取网站中的链接并将链接粘贴到文本文件中.你可以一步一步地指导我设置爬虫吗?我正在使用Eclipse.
我所做的是:
- 抓取页面
- 获取页面的所有链接,将它们放入列表中
- 启动一个新的爬虫,访问列表的每个链接
- 下载它们
必须有一个更快的方式,我可以在访问页面时直接下载链接?谢谢!
我在使用此代码时遇到了一些问题:
import edu.uci.ics.crawler4j.crawler.CrawlConfig;
import edu.uci.ics.crawler4j.crawler.CrawlController;
import edu.uci.ics.crawler4j.fetcher.PageFetcher;
import edu.uci.ics.crawler4j.robotstxt.RobotstxtConfig;
import edu.uci.ics.crawler4j.robotstxt.RobotstxtServer;
public class Controller {
String crawlStorageFolder = "/data/crawl/root";
int numberOfCrawlers = 7;
CrawlConfig config = new CrawlConfig();
config.setCrawlStorageFolder(crawlStorageFolder);
/*
* Instantiate the controller for this crawl.
*/
PageFetcher pageFetcher = new PageFetcher(config);
RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);
/*
* For each crawl, you need to add some seed urls. These are the first
* URLs that …Run Code Online (Sandbox Code Playgroud) 我正在IntelliJ中调试Maven项目,并且试图弄清楚如何进入pom.xml中指定的依赖项之一的源代码。具体来说,我的项目依赖于Crawler4J,我从Parser.parse()看到一些奇怪的行为,并且我想采用该方法。我尝试用源设置本地克隆的Git存储库,并通过“项目结构”下的“源”选项将其附加,但是我仍然无法进入已编译的Crawler4J方法。作为一个长期的C#开发人员(和相对的Java nub),我理想中希望使用的是.NET Reflector的功能,以便在调试时即时进行反编译,但是附加源代码的方式就足够了。
我目前在应用程序中使用jsoup来解析和分析网页.但我想确保我遵守robot.txt规则并且只访问允许的页面.
我很确定jsoup不是为此制作的,而是关于网页抓取和解析.所以我打算让函数/模块读取域/站点的robot.txt,并确定我是否允许访问的URL.
我做了一些研究,发现了以下内容.但我不确定这些,所以如果有人做同样的项目,其中涉及到robot.txt解析请分享你的想法和想法会很棒.
http://sourceforge.net/projects/jrobotx/
https://code.google.com/p/crawler-commons/
http://code.google.com/p/crowl/source/browse/trunk/Crow/src/org/crow/base/Robotstxt.java?r=12
crawler4j ×10
java ×8
web-crawler ×5
jsoup ×3
debugging ×1
html-parsing ×1
import.io ×1
maven ×1
web-scraping ×1
xpath ×1