同步操作将从 ggymm/Spider2.0 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Windows10 64bit操作系统,Visio Studio 2017(安装c++组件),Java8 64bit,Python2.7,cmake3.11.3-win
git clone https://bitbucket.org/chromiumembedded/java-cef.git src
mkdir jcef_build && cd jcef_build
cmake -G "Visual Studio 15 Win64" ..
有可能会因为网络原因出现上边的下载错误 把gs://chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd
改为https://storage.googleapis.com/chromium-clang-format/6ddedd571c56b8c184f30a3c1fc36984e8c10ccd
然后使用浏览器下载,下载完成后再把文件名改为clang-format.exe放到tools/buildtools/win目录
使用VS2017打开jcef_build文件夹中的jcef.sln
修改解决方案类型
在VS2017中选择生成->配置管理器 ->活动解决方案配置,修改为"Releas
在VS2017中选择生成->创建解决方案
compile.bat win64
run.bat win64 Release detailed
make_distrib.bat win64
修改为当前项目的或者是打包完成的目录地址:D:/Products/smallSpider/new/src/binary_distrib/win64/bin/lib/win
此类爬虫局限性特别大。对于实在无法抓取的网页数据。例如Ajax请求参数复杂,无法通过httpclient获取json数据;或者需要加载复杂js,无法通过使用phantomjs等无头浏览器加载页面;又或者使用selenium嫌弃太慢。 那么此项目可能会为您提供帮助
此项目中抓取携程酒店数据的例子请谨慎使用
//新建一个浏览器
UrlBrowserInstance browserInstanceFirst = new UrlBrowserInstance(client, osrEnabledArg, transparentPaintingEnabledArg);
//设置起始页和结束页开始抓取
browserInstanceFirst.createBrowserAndCrawler(1L, 20L);
队列和一些常量以及共用方法,通常情况下可以多关注一下队列类就足够了
实现了浏览器接口。一般来说列表页跳转下一页有两种方式,一种是URL改变。一种是页面不重新刷新,使用Ajax加载数据。此部分代码在impl包下面,需要根据网站进行修改。parase包下是两种处理页面方式,访问页面之后直接保存页面HTML或者直接进行处理生成csv文件或者保存数据库。使用Jsoup解析Html文档即可。非常简单
//浏览器实例需要实现接口方法,可以创建多个浏览器实例
public interface BrowserInstance {
void createBrowserAndCrawler(Long startIndex, Long stopIndex);
}
//下载Html页面示例代码
public class DownloadHtmlDocument implements CefStringVisitor {
private String url;
public DownloadHtmlDocument(String url) {
this.url = url;
}
@Override
public void visit(String string) {
StringBuilder savePath = new StringBuilder("/home/ctrip/");
String index = StringUtils.remove(url, Constant.CTRIPHOTELLISTUTLTEMP);
savePath.append(index).append(".txt");
File file = new File(savePath.toString());
try {
if (!file.exists()) {
FileUtils.writeStringToFile(file, string, "UTF-8", false);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
//解析Html页面示例代码(未完成)
public class ParsingHtmlDocument implements CefStringVisitor {
private Map<String, String> xpathList;
public ParsingHtmlDocument(Map<String, String> xpathList) {
this.xpathList = xpathList;
}
@Override
public void visit(String string) {
Document htmlDocument = Jsoup.parse(string);
System.out.println(htmlDocument);
System.out.println(xpathList);
}
}
核心包,其中的类以后会打入到Jar包中。与业务无关
使用swing制作的浏览器Frame。几乎照搬JCEF提供的detail例子
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。