「java抓取京东」抓取京东商品

博主:adminadmin 2022-12-08 13:03:09 65

本篇文章给大家谈谈java抓取京东,以及抓取京东商品对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用java实现抓取商城商品信息到自己的页面上来!!! 求解啊,大神们!!

对于加密的网站还没去研究,不知道能不能抓取,现在只是对一些没有加密的网站进行网页数据抓取。刚刚开始写的时候以为很多网站都能抓取,但是发现很多都加密了,本来以为一些地址可以通过网页数据检测工具测出他的数据变化,但是只能监测到一些通过js显示的数据,依然不能抓取到加密的网站。嗨,这个问题以后再说吧。

[java]

import java.net.* ;

import java.io.* ;

import java.util.regex.* ;

public class Capture{

public static void main(String args[])throws Exception{

System.out.println("*************************手机号查询************************") ;

System.out.println("我的位置是:" + new GrabMobile().grabMobileLocation("15023141745")) ;

System.out.println("手机卡类型是:" + new GrabMobile().grabMobileType("15023141745")) ;

System.out.println("我的邮编是:" + new GrabMobile().grabMobilePost("15023141745")) ;

System.out.println("*************************身份证查询************************") ;

System.out.println("我的性别是:" + new GrabIdentity().grabIdentitySex("362203199208243575")) ;

System.out.println("我的生日是:" + new GrabIdentity().grabIdentityBirth("362203199208243575")) ;

System.out.println("我的家乡是:" + new GrabIdentity().grabIdentityHome("362203199208243575")) ;

}

}

class GrabMobile{

public String grabMobileLocation(String m)throws Exception{

String strUrl = ";mobile=" + m;

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = "卡号归属地" ;

String strEnd = "卡 类 型";

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+42,end-33) ;

result = drawChMob(result) ;

return result ;

}

public String grabMobileType(String m)throws Exception{

String strUrl = ";mobile=" + m;

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = "卡 类 型" ;

String strEnd = "TD align=\"center\"区 号/TD";

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+12,end) ;

result = drawChMob(result) ;

result = result.substring(1) ;

return result ;

}

public String grabMobilePost(String m)throws Exception{

String strUrl = ";mobile=" + m;

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = "邮 编" ;

String strEnd = "更详细的..";

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+40,end-55) ;

return result ;

}

public String drawChMob(String str){

StringBuffer strBuf = new StringBuffer() ;

String regex="([\u4e00-\u9fa5]+)";

Matcher matcher = Pattern.compile(regex).matcher(str);

while(matcher.find()){

strBuf.append(matcher.group(0)).toString() ;

}

return strBuf.toString() ;

}

}

class GrabIdentity{

public String grabIdentitySex(String userid)throws Exception{

String strUrl = ";userid=" + userid + "B1=%B2%E9+%D1%AF";

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = " 别" ;

String strEnd = "出生日期";

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+7,end) ;

result = drawCh(result) ;

return result ;

}

public String grabIdentityBirth(String userid)throws Exception{

String strUrl = ";userid=" + userid + "B1=%B2%E9+%D1%AF";

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = "出生日期:/tdtd class=\"tdc2\"" ;

String strEnd = "/tdtrtrtd class=";

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+27,end) ;

return result ;

}

public String grabIdentityHome(String userid)throws Exception{

String strUrl = ";userid=" + userid + "B1=%B2%E9+%D1%AF";

URL url = new URL(strUrl) ;

HttpURLConnection httpUrlCon = (HttpURLConnection)url.openConnection() ;

InputStreamReader inRead = new InputStreamReader(httpUrlCon.getInputStream(),"GBK") ;

BufferedReader bufRead = new BufferedReader(inRead) ;

StringBuffer strBuf = new StringBuffer() ;

String line = "" ;

while ((line = bufRead.readLine()) != null) {

strBuf.append(line);

}

String strStart = "证 地:/tdtd class=\"tdc2\"" ;

String strEnd = "br//td/trtrtd class=\"tdc3\" valign=\"top\" align=\"right\"部分或" ;

String strAll = strBuf.toString() ;

int start = strAll.indexOf(strStart) ;

int end = strAll.indexOf(strEnd) ;

String result = strAll.substring(start+31,end) ;

return result ;

}

public String drawCh(String str){

StringBuffer strBuf = new StringBuffer() ;

String regex="([\u4e00-\u9fa5]+)";

Matcher matcher = Pattern.compile(regex).matcher(str);

if(matcher.find()){

str = strBuf.append(matcher.group(0)).toString() ;

}

return str ;

}

}

待会传上改装成的android小程序,可以手机号查询和身份证查询。

java抓取京东商城商品信息,根据网页源文件如何写抓取如下信息:

听说过jsoup吗。很简单,两句话搞定。

Document   document = Jsoup

                        .connect("这个页面的url例如:")

                        .method(Connection.Method.GET)

                        .followRedirects(false)

                        .timeout(100000)

                        .get();

Element el=document.getElementById("zzh_jd")//div 开始的id 。

//然后这个element你想怎么用就怎么用了。

//jsoup的使用类似于javascript很方便。

京东详情页怎么批量抓取

用电商图片助手,可以批量抓取京东的详情页和视频,一键保存到电脑上,然后再上传到淘宝就行了。

java程序解析京东产品价格

网络爬虫吗

抓取网页内容,对于商品ID的price

建议分析下京东商品网页上的内容

如何爬取京东手机上万的商品数据,这个神器可以帮你

Charles是一个网络抓包工具,我们可以用它来做App的抓包分析,得到App运行过程中发生的所有网络请求和响应内容,这就和Web端浏览器的开发者工具Network部分看到的结果一致。

相比Fiddler来说,Charles的功能更强大,而且跨平台支持更好。所以我们选用Charles作为主要的移动端抓包工具,用于分析移动App的数据包,辅助完成App数据抓取工作。

一、本节目标

本节我们以京东App为例,通过Charles抓取App运行过程中的网络数据包,然后查看具体的Request和Response内容,以此来了解Charles的用法。

二、准备工作

请确保已经正确安装Charles并开启了代理服务,手机和Charles处于同一个局域网下,Charles代理和CharlesCA证书设置好。

三、原理

首先Charles运行在自己的PC上,Charles运行的时候会在PC的8888端口开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。

确保手机和PC在同一个局域网内,我们可以使用手机模拟器通过虚拟网络连接,也可以使用手机真机和PC通过无线网络连接。

设置手机代理为Charles的代理地址,这样手机访问互联网的数据包就会流经Charles,Charles再转发这些数据包到真实的服务器,服务器返回的数据包再由Charles转发回手机,Charles就起到中间人的作用,所有流量包都可以捕捉到,因此所有HTTP请求和响应都可以捕获到。同时Charles还有权力对请求和响应进行修改。

四、抓包

初始状态下Charles的运行界面如下图所示。

Charles会一直监听PC和手机发生的网络数据包,捕获到的数据包就会显示在左侧,随着时间的推移,捕获的数据包越来越多,左侧列表的内容也会越来越多。

可以看到,图中左侧显示了Charles抓取到的请求站点,我们点击任意一个条目便可以查看对应请求的详细信息,其中包括Request、Response等内容。

接下来清空Charles的抓取结果,点击左侧的扫帚按钮即可清空当前捕获到的所有请求。然后点击第二个监听按钮,确保监听按钮是打开的,这表示Charles正在监听App的网络数据流,如下图所示。

这时打开手机京东,注意一定要提前设置好Charles的代理并配置好CA证书,否则没有效果。

打开任意一个商品,如iPhone,然后打开它的商品评论页面,如下图示。

不断上拉加载评论,可以看到Charles捕获到这个过程中京东App内发生的所有网络请求,如下图所示。

左侧列表中会出现一个api.m.jd.com链接,而且它在不停闪动,很可能就是当前App发出的获取评论数据的请求被Charles捕获到了。我们点击将其展开,继续上拉刷新评论。随着上拉的进行,此处又会出现一个个网络请求记录,这时新出现的数据包请求确定就是获取评论的请求。

为了验证其正确性,我们点击查看其中一个条目的详情信息。切换到Contents选项卡,这时我们发现一些JSON数据,核对一下结果,结果有commentData字段,其内容和我们在App中看到的评论内容一致,如下图所示。

这时可以确定,此请求对应的接口就是获取商品评论的接口。这样我们就成功捕获到了在上拉刷新的过程中发生的请求和响应内容。

五、分析

现在分析一下这个请求和响应的详细信息。首先可以回到Overview选项卡,上方显示了请求的接口URL,接着是响应状态Status Code、请求方式Method等,如下图所示。

这个结果和原本在Web端用浏览器开发者工具内捕获到的结果形式是类似的。

接下来点击Contents选项卡,查看该请求和响应的详情信息。

上半部分显示的是Request的信息,下半部分显示的是Response的信息。比如针对Reqeust,我们切换到Headers选项卡即可看到该Request的Headers信息,针对Response,我们切换到JSON TEXT选项卡即可看到该Response的Body信息,并且该内容已经被格式化,如下图所示。

由于这个请求是POST请求,我们还需要关心POST的表单信息,切换到Form选项卡即可查看,如下图所示。

这样我们就成功抓取App中的评论接口的请求和响应,并且可以查看Response返回的JSON数据。

至于其他App,我们同样可以使用这样的方式来分析。如果我们可以直接分析得到请求的URL和参数的规律,直接用程序模拟即可批量抓取。

六、重发

Charles还有一个强大功能,它可以将捕获到的请求加以修改并发送修改后的请求。点击上方的修改按钮,左侧列表就多了一个以编辑图标为开头的链接,这就代表此链接对应的请求正在被我们修改,如下图所示。

我们可以将Form中的某个字段移除,比如这里将partner字段移除,然后点击Remove。这时我们已经对原来请求携带的Form Data做了修改,然后点击下方的Execute按钮即可执行修改后的请求,如下图所示。

可以发现左侧列表再次出现了接口的请求结果,内容仍然不变,如下图所示。

删除Form表单中的partner字段并没有带来什么影响,所以这个字段是无关紧要的。

有了这个功能,我们就可以方便地使用Charles来做调试,可以通过修改参数、接口等来测试不同请求的响应状态,就可以知道哪些参数是必要的哪些是不必要的,以及参数分别有什么规律,最后得到一个最简单的接口和参数形式以供程序模拟调用使用。

七、结语

以上内容便是通过Charles抓包分析App请求的过程。通过Charles,我们成功抓取App中流经的网络数据包,捕获原始的数据,还可以修改原始请求和重新发起修改后的请求进行接口测试。

知道了请求和响应的具体信息,如果我们可以分析得到请求的URL和参数的规律,直接用程序模拟即可批量抓取!

手机爬虫非常有意思,而且可以爬取的数据非常多,当然还有很多东西要学。以后我也会写一些实战的有趣案例给大家。

Java中做网络抓取demo用的Jsoup进行url解析如果链接中带中文就会出现乱码

哪是因为网页编码都是UTF_8的 你出现中文即是GBK的 所以需要转成UTF_8格式的字符串 就不会出现乱码了

java抓取京东的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于抓取京东商品、java抓取京东的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-08,除非注明,否则均为首码项目网原创文章,转载请注明出处。