- 浏览: 364110 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (247)
- 数据库以及sql (11)
- java (48)
- 爬虫学习 (20)
- java编程 (28)
- python编程以及安装和配置 (27)
- oracle数据库 (32)
- mongodb基本操作 (4)
- linux学习 (7)
- easyUI (2)
- nodeJs (8)
- python学习 (16)
- 其他 (13)
- hadoop (1)
- svn (1)
- 汉字 (1)
- windows (2)
- jsp (5)
- fiddler (1)
- ETL (1)
- teamviewer (1)
- maven (4)
- GIT (2)
- datagrip (1)
- ocr (1)
- redis (3)
- mysql (3)
- linux (1)
- 数据服务 (0)
最新评论
package com.teamdev.jxbrowser.chromium.demoTest.Huhehaote;
import java.awt.BorderLayout;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
/**
* 爬取食药以及附件信息
* */
public class Test_Jsopu {
public static void main(String[] args) {
//模拟浏览器
LoggerProvider.getBrowserLogger().setLevel(Level.SEVERE);
LoggerProvider.getIPCLogger().setLevel(Level.SEVERE);
LoggerProvider.getChromiumProcessLogger().setLevel(Level.SEVERE);
final Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
BrowserPreferences preferences = browser.getPreferences();
preferences.setImagesEnabled(false);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
try {
//
String url="";
for(int i=0;i<7;i++){
if(i==0){
url="http://www.sda.gov.cn/WS01/CL1698/index.html";
}else{
url="http://www.sda.gov.cn/WS01/CL1698/index_"+i+".html";
}
search(browser,frame,url);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//一次页面检索
public static void search(final Browser br ,JFrame frm,final String url) throws Exception {
new Thread().sleep(3000);
Document doc = null;
String attrUrl =url;
System.out.println("attrUrl" + attrUrl);
try{
invokeAndWaitReady(br, new Runnable() {
public void run() {
br.loadURL(url);
}
});
} catch (Exception e2) {
e2.printStackTrace();
}
String html = br.getHTML();
doc = Jsoup.parse(html);
String text = doc.text();
System.out.println(text);
Elements els= doc.getElementsByAttributeValue("class", "ListColumnClass15");
System.out.println(els.size());
for (Element el : els) {
String title=el.getElementsByTag("a").get(0).text();
String href="http://www.sda.gov.cn/WS01"+el.getElementsByTag("a").attr("href").replace("..", "");
//System.out.println("title="+title);
System.out.println("href="+href);
try {
search2( br,frm,href,title);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
continue;
}
}
}
public static void search2(final Browser br ,JFrame frm,final String url,String title) throws Exception {
new Thread().sleep(3000);
Document doc = null;
String attrUrl =url;
System.out.println("attrUrl" + attrUrl);
try{
invokeAndWaitReady(br, new Runnable() {
public void run() {
br.loadURL(url);
}
});
} catch (Exception e2) {
e2.printStackTrace();
}
String html = br.getHTML();
doc = Jsoup.parse(html);
String strs[]=doc.html().split("line-height:16px");
for(int i=0;i<strs.length;i++){
Thread.sleep(3000);
if(i!=0&&i!=strs.length){
String str="http://www.sda.gov.cn/"+strs[i].split("href=\"")[1].split("\">")[0];
String firlname=strs[i].split("href=\"")[1].split("\">")[1].split("</")[0];
System.out.println("title:"+title);
System.out.println("str:"+str);
System.out.println("firlname:"+firlname);
runDownLoad(title, str,firlname);
}
System.out.println("---------------------------------------");
}
}
public static void invokeAndWaitReady(Browser browser,Runnable runnable) {
final CountDownLatch latch = new CountDownLatch(1);
LoadAdapter listener = new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
latch.countDown();
}
}
};
browser.addLoadListener(listener);
try {
runnable.run();
try {
if (!latch.await(60, TimeUnit.SECONDS)) {
//throw new RuntimeException(new TimeoutException());
}
} catch (InterruptedException ignore) {
ignore.printStackTrace();
Thread.currentThread().interrupt();
}
} finally {
browser.removeLoadListener(listener);
}
}
public static void runDownLoad(String title,String fileurl,String filename){
// 构造URL
URL url;
try {
url = new URL(fileurl);
// 打开URL连接
URLConnection con = (URLConnection)url.openConnection();
// 得到URL的输入流
InputStream input = con.getInputStream();
// 设置数据缓冲
byte[] bs = new byte[1024 * 2];
// 读取到的数据长度
int len;
// 输出的文件流保存图片至本地
String path1 = "c:/aa/"+title;
File f = new File(path1);
f.mkdirs();
// String hzm=fileurl.split("\\.")[fileurl.split("\\.").length-1];
OutputStream os = new FileOutputStream(path1+"\\"+filename);
while ((len = input.read(bs)) != -1) {
os.write(bs, 0, len);
}
os.close();
input.close();
} catch (MalformedURLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
import java.awt.BorderLayout;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.LoggerProvider;
import com.teamdev.jxbrowser.chromium.events.FinishLoadingEvent;
import com.teamdev.jxbrowser.chromium.events.LoadAdapter;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
/**
* 爬取食药以及附件信息
* */
public class Test_Jsopu {
public static void main(String[] args) {
//模拟浏览器
LoggerProvider.getBrowserLogger().setLevel(Level.SEVERE);
LoggerProvider.getIPCLogger().setLevel(Level.SEVERE);
LoggerProvider.getChromiumProcessLogger().setLevel(Level.SEVERE);
final Browser browser = new Browser();
BrowserView browserView = new BrowserView(browser);
BrowserPreferences preferences = browser.getPreferences();
preferences.setImagesEnabled(false);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.add(browserView, BorderLayout.CENTER);
frame.setSize(700, 500);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
try {
//
String url="";
for(int i=0;i<7;i++){
if(i==0){
url="http://www.sda.gov.cn/WS01/CL1698/index.html";
}else{
url="http://www.sda.gov.cn/WS01/CL1698/index_"+i+".html";
}
search(browser,frame,url);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//一次页面检索
public static void search(final Browser br ,JFrame frm,final String url) throws Exception {
new Thread().sleep(3000);
Document doc = null;
String attrUrl =url;
System.out.println("attrUrl" + attrUrl);
try{
invokeAndWaitReady(br, new Runnable() {
public void run() {
br.loadURL(url);
}
});
} catch (Exception e2) {
e2.printStackTrace();
}
String html = br.getHTML();
doc = Jsoup.parse(html);
String text = doc.text();
System.out.println(text);
Elements els= doc.getElementsByAttributeValue("class", "ListColumnClass15");
System.out.println(els.size());
for (Element el : els) {
String title=el.getElementsByTag("a").get(0).text();
String href="http://www.sda.gov.cn/WS01"+el.getElementsByTag("a").attr("href").replace("..", "");
//System.out.println("title="+title);
System.out.println("href="+href);
try {
search2( br,frm,href,title);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
continue;
}
}
}
public static void search2(final Browser br ,JFrame frm,final String url,String title) throws Exception {
new Thread().sleep(3000);
Document doc = null;
String attrUrl =url;
System.out.println("attrUrl" + attrUrl);
try{
invokeAndWaitReady(br, new Runnable() {
public void run() {
br.loadURL(url);
}
});
} catch (Exception e2) {
e2.printStackTrace();
}
String html = br.getHTML();
doc = Jsoup.parse(html);
String strs[]=doc.html().split("line-height:16px");
for(int i=0;i<strs.length;i++){
Thread.sleep(3000);
if(i!=0&&i!=strs.length){
String str="http://www.sda.gov.cn/"+strs[i].split("href=\"")[1].split("\">")[0];
String firlname=strs[i].split("href=\"")[1].split("\">")[1].split("</")[0];
System.out.println("title:"+title);
System.out.println("str:"+str);
System.out.println("firlname:"+firlname);
runDownLoad(title, str,firlname);
}
System.out.println("---------------------------------------");
}
}
public static void invokeAndWaitReady(Browser browser,Runnable runnable) {
final CountDownLatch latch = new CountDownLatch(1);
LoadAdapter listener = new LoadAdapter() {
@Override
public void onFinishLoadingFrame(FinishLoadingEvent event) {
if (event.isMainFrame()) {
latch.countDown();
}
}
};
browser.addLoadListener(listener);
try {
runnable.run();
try {
if (!latch.await(60, TimeUnit.SECONDS)) {
//throw new RuntimeException(new TimeoutException());
}
} catch (InterruptedException ignore) {
ignore.printStackTrace();
Thread.currentThread().interrupt();
}
} finally {
browser.removeLoadListener(listener);
}
}
public static void runDownLoad(String title,String fileurl,String filename){
// 构造URL
URL url;
try {
url = new URL(fileurl);
// 打开URL连接
URLConnection con = (URLConnection)url.openConnection();
// 得到URL的输入流
InputStream input = con.getInputStream();
// 设置数据缓冲
byte[] bs = new byte[1024 * 2];
// 读取到的数据长度
int len;
// 输出的文件流保存图片至本地
String path1 = "c:/aa/"+title;
File f = new File(path1);
f.mkdirs();
// String hzm=fileurl.split("\\.")[fileurl.split("\\.").length-1];
OutputStream os = new FileOutputStream(path1+"\\"+filename);
while ((len = input.read(bs)) != -1) {
os.write(bs, 0, len);
}
os.close();
input.close();
} catch (MalformedURLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
发表评论
-
java字符串 与 ASCII码相互转换
2018-09-12 14:32 10243public class stringToAscii { p ... -
java根据url下载附件源码
2017-04-18 10:37 689public static void runDownLoad( ... -
解决553 authentication is required 错误
2017-04-12 09:46 3486//获取系统属性 Properties pro = Sys ... -
java序列化和反序列化 以及transient的含义
2017-04-11 15:31 664=============================== ... -
ajax跨源解决办法(jsonp)
2017-04-11 10:39 439<!DOCTYPE html PUBLIC " ... -
socket知识
2017-04-11 10:29 446网络应用: socket java: socket类 1. ... -
URL的常用方法和获取网页数据实例
2017-04-10 11:23 585=============================== ... -
tomcat发布Java项目的两种方式
2017-04-06 15:19 339部署tomcat项目有两种方式: 方法一是在eclipse中启 ... -
HashSet,TreeSet和LinkedHashSet的区别
2017-04-06 10:10 386原文:http://www.cnblogs.com ... -
java中map排序(SortedMap的用法)
2017-04-06 09:47 2049package JavaSenior; import jav ... -
java遍历list和map集合
2017-04-06 09:18 1254package JavaSenior; import jav ... -
在Eclipse中使用Axis2插件自动生成WSDL文件
2017-03-30 16:48 1007原文:http://blog.csdn.net/a198810 ... -
window_根据进程号关闭进程
2017-03-29 11:22 534netstat -ano | findstr 80 //列出进 ... -
java代码关闭指定进程
2017-03-28 17:07 1213//window下 public static void m ... -
eclipse配置webservice
2017-03-28 14:19 505引用:http://www.cnblogs.com/xwdre ... -
java遍历list和map的几种方式
2017-03-24 17:06 980package JavaSenior; import jav ... -
java多态的优点和存在的必要条件
2017-03-24 14:46 1323/** 多态的优点: 1. 消除类型之间的耦合关系 ... -
java 目录创建,遍历与删除
2017-03-24 10:56 495package JavaAdvanced; import j ... -
java输入输出流
2017-03-24 10:15 613package JavaAdvanced; //Java 流( ... -
java中二维数组的赋值与遍历
2017-03-23 16:54 2650//创建多维数组 int [][] IntAy=new i ...
相关推荐
官方解释curl是一个利用URL语法在命令行方式下工作的文件传输工具。curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, ... socks5代理服务器
通过webBrowser模拟浏览器,获取网页内容。 大致思路: 1、webBrowser加载网页 (如有Ajax动态加载分页的网站,需要配合页面动作,直到页面加载完成,如:滚动条操作) 2、加载完成后获取webBrowser.Document (配合...
java解析html抓取网站数据采集网站信息
整个CSDN都是写的python的,python抓取教程一大堆,没必要再传了,这里讲的是PHP的,但可惜的是,整个网络都没讲到最关键一点,导致一直尝试不成功,初始代码,配置参数和超时都已说明, 压缩包中有文档,填坑的...
java抓取网站数据
一个用java实现的抓取网站程序,使用了多线程抓取,对html分析程序和防屏蔽功能实现
java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java简单的抓取网页内容的程序java...
Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战Python3 爬虫实战
java web网站常用抓取其他网站内容,很详细很经典,
该工具集成了各大常见蜘蛛UA,模拟这些蜘蛛UA访问抓取网站,目前网络上很流行蜘蛛挂马,通过该工具模拟访问可以分析网站是否被挂针对搜索引擎的挂马,可以模拟蜘蛛查看源码。 用法也很简单,打开以后输入目标地址,...
Java网页抓取数据
java实现在线抓取网易云用户信息,支持在线抓取网易云用户信息,用户头像,昵称,电话等等;抓取网易云音乐热门歌手及其歌曲、专辑等信息保存到数据库;使用HttpClient和Jsoup进行模拟请求并对网页进行解析;使用...
简单的实现网页数据抓取的demo。java实现
java网页抓取数据
java抓取微信公众号最近10篇文章,基于微信搜狗搜索实现。java源码.git 仓库 http://git.oschina.net/hcxy/WechatSpider
java抓取网页数据,主要用于抓取手机号和身份证查询网站的数据。
主要介绍了Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能,涉及Python基于re模块的正则匹配及selenium模块的页面抓取等相关操作技巧,需要的朋友可以参考下
java模拟http请求登陆抓取海投网信息送入到mysql数据库,特别注意的是需要配置mysql为gbk 或者utf-8
浏览器上默认记住的用户名和密码的抓取器,可以提取出浏览器上的用户名和密码。很好用的小工具
可以直接运行。java利用htmlparser抓取网页数据