- 浏览: 364112 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (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.demo_sanya12.xiecheng.evment;
import java.awt.BorderLayout;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Random;
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.hyjx.common.CommonUtil;
import com.hyjx.orclJdbcUtil.JDBCUtils;
import com.hyjx.xcUtil.XcTool;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.JSValue;
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 sy_good_xc_comment {
public static void main(String[] args) throws Exception {
//初始化浏览器
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, 800);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//创建数据库
java.sql.Connection conOrcale = null;
try {
conOrcale = JDBCUtils.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
String sql = null;
PreparedStatement ps = null;
String sql1 = null;
String sql2 = null;
Statement st2 = null;
ResultSet rs2 = null;
Document doc = null;
String url = null;
try{
//艺龙
sql1 = " select * from a_a_nm_good_12 where plat_name='携程' and type ='酒店' and state is null ";
sql2 = " update a_a_nm_good_12 set state = '评论已抓' where good_id = ? ";
ps = conOrcale.prepareStatement(sql2);
st2 = (java.sql.Statement) conOrcale.createStatement();
rs2 = st2.executeQuery(sql1);
}catch (Exception e) {
e.printStackTrace();
}
int i = 1;
for(;rs2.next();){
System.out.println(i);
i++;
final String good_url = rs2.getString("good_url");
String good_id = rs2.getString("good_id");
String shop_id = rs2.getString("shop_id");
search( good_url,shop_id,good_id, frame, browser);
ps.setString(1,good_id);
//ps.executeUpdate();
}
}
static void search(final String good_url, String shop_id,String good_id ,JFrame frame, final Browser browser)throws Exception{
java.sql.Connection conOrcale = null;
try {
conOrcale = JDBCUtils.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
String sql = null;
PreparedStatement ps2 = null;
try{
sql = " insert into a_a_nm_evment_12 "+
" (ev_id, shop_id, ev_time, ev_user, ev_content,good_id) "+
" values "+
" (? , ? , ? , ? , ? ,? ) ";
ps2 = conOrcale.prepareStatement(sql);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("good_url:"+good_url);
invokeAndWaitReady(browser, new Runnable() {
public void run() {
browser.loadURL(good_url);
//browser.loadURL("http://hotel.elong.com/sanya/90574280/#review");
}
});
try {
Thread.sleep(1000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// //设置滚动条滚动速度
// for(int i = 1;i<10;i++){
// browser.executeJavaScriptAndReturnValue("window.scrollTo(100,"+i*200+")");
// try {
// Thread.sleep(200*1);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
// }
int num = 1;
//得到html和document对象
String html = browser.getHTML();
Document document = Jsoup.parse(html);
int cooment_view=document.getElementsByAttributeValue("id", "id_comment_view").size();
if(cooment_view>0){
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('comment_view')[0].click();");
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('select_sort')[0].options[1].selected=true");
browser.executeJavaScriptAndReturnValue("document.getElementById('cPageBtn').click()");
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
//重新得到html和document对象
html = browser.getHTML();
document = Jsoup.parse(html);
Elements elements = document.getElementsByAttributeValue("class", "comment_block J_asyncCmt");
System.out.println("elements.size()"+elements.size());//输入条数
String EV_TIME="";
String EV_USER="";
String EV_CONTENT="";
String shijian ="";
for(Element e : elements){
Document parse = Jsoup.parse(e.html());
String EV_NUM = null;
try {
EV_USER = parse.getElementsByAttributeValue("class","name").text();
} catch (Exception e4) {
// TODO Auto-generated catch block
EV_USER = null;
}
try {
EV_CONTENT = parse.getElementsByAttributeValue("class","J_commentDetail").text();
} catch (Exception e3) {
// TODO Auto-generated catch block
EV_CONTENT = null;
}
try {
EV_TIME =parse.getElementsByAttributeValue("class","time").text();
if(EV_TIME.contains("发表于")){
EV_TIME=EV_TIME.replace("发表于", "");
}
} catch (Exception e2) {
// TODO Auto-generated catch block
EV_TIME = null;
}
shijian = EV_TIME.substring(0,7);
if( (shijian).equals("2016-12") ){
System.out.println("good_url "+good_url);
System.out.println("评论内容 "+EV_CONTENT);
System.out.println("评论人 "+EV_USER);
System.out.println("评论时间 "+EV_TIME);
System.out.println("评论分数 "+EV_NUM);
try {
//(ev_id, shop_id, ev_time, ev_user, ev_content,good_id) "+
ps2.setString(1, CommonUtil.getUUID32());
ps2.setString(2, shop_id);
ps2.setString(3, EV_TIME);
ps2.setString(4, EV_USER);
ps2.setString(5, EV_CONTENT);
ps2.setString(6, good_id);
//ps2.executeUpdate();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("---------------------------------------------------------------------------------------------");
}else{return;}
}
//判断是否有下一页,如果有下一页,继续插入数据
while(jumpNext(browser)){
num++;
//超过20页的不抓
// if(num>=20){
// break;
// }
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// for(int i = 1;i<10;i++){
// browser.executeJavaScriptAndReturnValue("window.scrollTo(100,"+i*200+")");
// try {
// Thread.sleep(200*1);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
// }
html = browser.getHTML();
document = Jsoup.parse(html);
Elements elementss = document.getElementsByAttributeValue("class", "comment_block J_asyncCmt");
System.out.println("elements.size()"+elementss.size());//输入条数
for(Element e : elementss){
Document parse = Jsoup.parse(e.html());
try {
EV_USER = parse.getElementsByAttributeValue("class","name").text();
} catch (Exception e4) {
// TODO Auto-generated catch block
EV_USER = null;
}
try {
EV_CONTENT = parse.getElementsByAttributeValue("class","J_commentDetail").text();
} catch (Exception e3) {
// TODO Auto-generated catch block
EV_CONTENT = null;
}
try {
EV_TIME =parse.getElementsByAttributeValue("class","time").text();
if(EV_TIME.contains("发表于")){
EV_TIME=EV_TIME.replace("发表于", "");
}
} catch (Exception e2) {
// TODO Auto-generated catch block
EV_TIME = null;
}
shijian = EV_TIME.substring(0,7);
if( (shijian).equals("2016-12") ){
System.out.println("客体url:"+good_url);
System.out.println("评论内容:"+EV_CONTENT);
System.out.println("评论人: "+EV_USER);
System.out.println("评论时间:"+EV_TIME);
try {
ps2.setString(1, CommonUtil.getUUID32());
ps2.setString(2, shop_id);
ps2.setString(3, EV_TIME);
ps2.setString(4, EV_USER);
ps2.setString(5, EV_CONTENT);
ps2.setString(6, good_id);
//ps2.executeUpdate();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("---------------------------------------------------------------------------------------------");
}else{return;}
}
}
}else{
return;
}
}
/**
* 首先判断是否有下一页按钮
* @param browser
* @return
*/
public static boolean jumpNext(Browser browser){
String html = browser.getHTML();
Document document = Jsoup.parse(html);
int num_page_next=0;
try {
num_page_next = document.getElementsByAttributeValue("class", "c_down").size();
} catch (Exception e) {
return false;
}
if(num_page_next>0){
System.out.println("点击下一页");
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('c_down')[0].click()");
//browser.executeJavaScriptAndReturnValue("document.getElementsById('comment_paging').getElementsByClassName('page_next')[0].click()");
// browser.executeJavaScriptAndReturnValue("document.select('#comment_paging').getElementsByTagName('a')["+(num_pagesize-1)+"].click()");
}else{
return false;
}
return true;
}
// JSValue nextButtonNum = browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('h-pagination pb20')[0].getElementsByClassName('a')[0].length");
//
// System.out.println("下一页按钮数量:"+nextButtonNum.getNumber());
// int num = ((Number)nextButtonNum.getNumber()).intValue();
// if(num == 0){
// return false;
// }
// browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('h-pagination pb20')[0].getElementsByClassName('a')[0].click()");
// return true;
//}
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);
}
}
}
import java.awt.BorderLayout;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Random;
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.hyjx.common.CommonUtil;
import com.hyjx.orclJdbcUtil.JDBCUtils;
import com.hyjx.xcUtil.XcTool;
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.BrowserPreferences;
import com.teamdev.jxbrowser.chromium.JSValue;
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 sy_good_xc_comment {
public static void main(String[] args) throws Exception {
//初始化浏览器
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, 800);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
//创建数据库
java.sql.Connection conOrcale = null;
try {
conOrcale = JDBCUtils.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
String sql = null;
PreparedStatement ps = null;
String sql1 = null;
String sql2 = null;
Statement st2 = null;
ResultSet rs2 = null;
Document doc = null;
String url = null;
try{
//艺龙
sql1 = " select * from a_a_nm_good_12 where plat_name='携程' and type ='酒店' and state is null ";
sql2 = " update a_a_nm_good_12 set state = '评论已抓' where good_id = ? ";
ps = conOrcale.prepareStatement(sql2);
st2 = (java.sql.Statement) conOrcale.createStatement();
rs2 = st2.executeQuery(sql1);
}catch (Exception e) {
e.printStackTrace();
}
int i = 1;
for(;rs2.next();){
System.out.println(i);
i++;
final String good_url = rs2.getString("good_url");
String good_id = rs2.getString("good_id");
String shop_id = rs2.getString("shop_id");
search( good_url,shop_id,good_id, frame, browser);
ps.setString(1,good_id);
//ps.executeUpdate();
}
}
static void search(final String good_url, String shop_id,String good_id ,JFrame frame, final Browser browser)throws Exception{
java.sql.Connection conOrcale = null;
try {
conOrcale = JDBCUtils.getConnection();
} catch (SQLException e1) {
e1.printStackTrace();
}
String sql = null;
PreparedStatement ps2 = null;
try{
sql = " insert into a_a_nm_evment_12 "+
" (ev_id, shop_id, ev_time, ev_user, ev_content,good_id) "+
" values "+
" (? , ? , ? , ? , ? ,? ) ";
ps2 = conOrcale.prepareStatement(sql);
}catch (Exception e) {
e.printStackTrace();
}
System.out.println("good_url:"+good_url);
invokeAndWaitReady(browser, new Runnable() {
public void run() {
browser.loadURL(good_url);
//browser.loadURL("http://hotel.elong.com/sanya/90574280/#review");
}
});
try {
Thread.sleep(1000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// //设置滚动条滚动速度
// for(int i = 1;i<10;i++){
// browser.executeJavaScriptAndReturnValue("window.scrollTo(100,"+i*200+")");
// try {
// Thread.sleep(200*1);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
// }
int num = 1;
//得到html和document对象
String html = browser.getHTML();
Document document = Jsoup.parse(html);
int cooment_view=document.getElementsByAttributeValue("id", "id_comment_view").size();
if(cooment_view>0){
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('comment_view')[0].click();");
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('select_sort')[0].options[1].selected=true");
browser.executeJavaScriptAndReturnValue("document.getElementById('cPageBtn').click()");
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
//重新得到html和document对象
html = browser.getHTML();
document = Jsoup.parse(html);
Elements elements = document.getElementsByAttributeValue("class", "comment_block J_asyncCmt");
System.out.println("elements.size()"+elements.size());//输入条数
String EV_TIME="";
String EV_USER="";
String EV_CONTENT="";
String shijian ="";
for(Element e : elements){
Document parse = Jsoup.parse(e.html());
String EV_NUM = null;
try {
EV_USER = parse.getElementsByAttributeValue("class","name").text();
} catch (Exception e4) {
// TODO Auto-generated catch block
EV_USER = null;
}
try {
EV_CONTENT = parse.getElementsByAttributeValue("class","J_commentDetail").text();
} catch (Exception e3) {
// TODO Auto-generated catch block
EV_CONTENT = null;
}
try {
EV_TIME =parse.getElementsByAttributeValue("class","time").text();
if(EV_TIME.contains("发表于")){
EV_TIME=EV_TIME.replace("发表于", "");
}
} catch (Exception e2) {
// TODO Auto-generated catch block
EV_TIME = null;
}
shijian = EV_TIME.substring(0,7);
if( (shijian).equals("2016-12") ){
System.out.println("good_url "+good_url);
System.out.println("评论内容 "+EV_CONTENT);
System.out.println("评论人 "+EV_USER);
System.out.println("评论时间 "+EV_TIME);
System.out.println("评论分数 "+EV_NUM);
try {
//(ev_id, shop_id, ev_time, ev_user, ev_content,good_id) "+
ps2.setString(1, CommonUtil.getUUID32());
ps2.setString(2, shop_id);
ps2.setString(3, EV_TIME);
ps2.setString(4, EV_USER);
ps2.setString(5, EV_CONTENT);
ps2.setString(6, good_id);
//ps2.executeUpdate();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("---------------------------------------------------------------------------------------------");
}else{return;}
}
//判断是否有下一页,如果有下一页,继续插入数据
while(jumpNext(browser)){
num++;
//超过20页的不抓
// if(num>=20){
// break;
// }
try {
Thread.sleep(2000*1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// for(int i = 1;i<10;i++){
// browser.executeJavaScriptAndReturnValue("window.scrollTo(100,"+i*200+")");
// try {
// Thread.sleep(200*1);
// } catch (InterruptedException e1) {
// e1.printStackTrace();
// }
// }
html = browser.getHTML();
document = Jsoup.parse(html);
Elements elementss = document.getElementsByAttributeValue("class", "comment_block J_asyncCmt");
System.out.println("elements.size()"+elementss.size());//输入条数
for(Element e : elementss){
Document parse = Jsoup.parse(e.html());
try {
EV_USER = parse.getElementsByAttributeValue("class","name").text();
} catch (Exception e4) {
// TODO Auto-generated catch block
EV_USER = null;
}
try {
EV_CONTENT = parse.getElementsByAttributeValue("class","J_commentDetail").text();
} catch (Exception e3) {
// TODO Auto-generated catch block
EV_CONTENT = null;
}
try {
EV_TIME =parse.getElementsByAttributeValue("class","time").text();
if(EV_TIME.contains("发表于")){
EV_TIME=EV_TIME.replace("发表于", "");
}
} catch (Exception e2) {
// TODO Auto-generated catch block
EV_TIME = null;
}
shijian = EV_TIME.substring(0,7);
if( (shijian).equals("2016-12") ){
System.out.println("客体url:"+good_url);
System.out.println("评论内容:"+EV_CONTENT);
System.out.println("评论人: "+EV_USER);
System.out.println("评论时间:"+EV_TIME);
try {
ps2.setString(1, CommonUtil.getUUID32());
ps2.setString(2, shop_id);
ps2.setString(3, EV_TIME);
ps2.setString(4, EV_USER);
ps2.setString(5, EV_CONTENT);
ps2.setString(6, good_id);
//ps2.executeUpdate();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("---------------------------------------------------------------------------------------------");
}else{return;}
}
}
}else{
return;
}
}
/**
* 首先判断是否有下一页按钮
* @param browser
* @return
*/
public static boolean jumpNext(Browser browser){
String html = browser.getHTML();
Document document = Jsoup.parse(html);
int num_page_next=0;
try {
num_page_next = document.getElementsByAttributeValue("class", "c_down").size();
} catch (Exception e) {
return false;
}
if(num_page_next>0){
System.out.println("点击下一页");
browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('c_down')[0].click()");
//browser.executeJavaScriptAndReturnValue("document.getElementsById('comment_paging').getElementsByClassName('page_next')[0].click()");
// browser.executeJavaScriptAndReturnValue("document.select('#comment_paging').getElementsByTagName('a')["+(num_pagesize-1)+"].click()");
}else{
return false;
}
return true;
}
// JSValue nextButtonNum = browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('h-pagination pb20')[0].getElementsByClassName('a')[0].length");
//
// System.out.println("下一页按钮数量:"+nextButtonNum.getNumber());
// int num = ((Number)nextButtonNum.getNumber()).intValue();
// if(num == 0){
// return false;
// }
// browser.executeJavaScriptAndReturnValue("document.getElementsByClassName('h-pagination pb20')[0].getElementsByClassName('a')[0].click()");
// return true;
//}
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);
}
}
}
发表评论
-
采集ymx商品信息
2018-08-29 15:28 503public static void main(String[ ... -
根据百度加密url, 获取真实url
2018-08-06 10:46 0public static void main(String[ ... -
fiddler 抓取 手机https 数据包 完美解决
2018-08-03 12:43 3018转:https://jingyan.baidu.com ... -
无忧代理IP
2018-07-30 16:19 0http://api.ip.data5u.com/dynami ... -
无所不能的四种请求方式(天下武功为怪不破)
2018-07-26 11:50 836package com.teamdev.jxbrowser.c ... -
post请求加json参数方式二
2018-07-24 14:02 1969package com.teamdev.jxbrowser.c ... -
post请求加json参数或xml参数
2018-07-20 18:21 1249import java.io.BufferedReader; ... -
jd编号
2017-11-02 17:59 502京东店铺:https://mall.jd.com/index- ... -
清除google缓存
2017-10-26 11:20 6241.进入 chrome://net-internals/#dn ... -
adb server is out of date. killing... 本地连接夜神模拟器失败、超时
2017-06-19 10:43 1497原因:1.模拟器器设置了代理;2.主要是模拟器和sdk 的ad ... -
fiddler抓取的https请求 数据乱码问题解决方案
2017-06-09 09:44 7201参考地址:http://blog.csdn.net/SomeO ... -
chromium.Browser 禁止加载图片,提升加载速度
2017-05-25 11:29 1166package com.teamdev.jxbrowser.c ... -
chrome 禁止加载网页图片 解决办法
2017-05-25 11:18 23261.在谷歌浏览器中输入:chrome://settings/c ... -
开源爬虫框架的优缺点?
2017-03-22 14:46 796开源爬虫框架各有什么优缺点? 作者:老夏 开发网络爬 ... -
反爬虫
2017-03-17 10:34 6711. 伪装user agent User agen ... -
爬虫被封禁原因
2017-03-17 09:37 1517爬虫被封禁常见原因 1. ... -
App数据抓取
2017-03-17 09:32 1065思路: 通过fiddler抓包 ... -
八爪鱼规则学习
2017-03-08 13:44 8241.八爪鱼采集器是任何一个需要从网页获取信息的人都必备的采集工 ... -
httpclient
2016-11-01 16:37 745package com.teamdev.jxbrowser.c ... -
jsoup + json 解析网页
2016-11-01 16:25 1269package com.teamdev.jxbrowser.c ...
相关推荐
使用org.htmlparser.Parser 模拟js 查找页面元素
jQuery下拉选择城市插件
jQuery点击文本框下拉菜单城市选择代码
jQuery点击文本框下拉菜单城市选择代码
类似百度下拉提示 模拟select下拉框 jquery插件 自动提示框 下拉框 本插件依赖于jquery的插件,类似于百度下拉提示框
jQuery input文本框点击下拉菜单选择代码
jQuery点击下拉选择添加标签代码是一款支持添加多个tag关键词标签插件,默认设置好多个标签,点击下拉进行选择,也可以对已经选择的标签进行删除。
jQuery模拟Select下拉菜单选中添加代码是一款支持多选的下拉菜单选项选择插件,带搜索功能。
这是一个java的web样例工程,实现的是jquery+ajax传输
jquery下拉选择效果,供大家一起共同分享学习。
jquery html5动画下拉菜单鼠标点击展开多级下拉菜单列表 jquery html5动画下拉菜单鼠标点击展开多级下拉菜单列表 jquery html5动画下拉菜单鼠标点击展开多级下拉菜单列表
jQuery多功能搜索框插件下拉菜单选择代码.rar
jQuery多级下拉菜单支持多级下拉列表菜单,适用于商城网站或者企业网站,php中文网推荐下载!
jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择 jQuery下拉列表框双向选择
jQuery手机移动端下拉列表选择代码
下拉菜单-JQUERY下拉菜单-JQUERY下拉菜单-JQUERY
jQuery输入框下拉选择菜单是一款jQuery模拟select下拉框分页菜单插件,点击输入框弹出下拉分页菜单选择列表,支持下拉,分页,键盘操作等功能代码。
div+css打造select下拉菜单,可自己修改相应样式!!!
jQuery上啦刷新 jQuery下拉刷新,基于jQuery的下拉以及上啦刷新
jquery实现输入框点击出现下拉列表树插件代码,jquery实现输入框点击出现下拉列表树插件代码(html)