java程序员菜鸟进阶(八)分享一个爬取B2B网站信息的程序

news/2024/5/10 2:41:26/文章来源:https://blog.csdn.net/iteye_7527/article/details/82481315


前段时间,女朋友如愿以偿的找到了销售的工作,第一天正式上班还挺高兴,第二天就开始愁眉苦脸了。就是因为他这销售实在是太麻烦,以后每天要到一些B2B网站去找一些客户信息,每天要找几百条,刚开始我还安慰的说,没事,以后我帮你找,我接手这工作第一天还很老实,第一天用了不到一个小时的时间帮忙找了八十条,但到了第二天我也烦了,太枯燥了。瞪得眼珠子都疼,突然想想,我堂堂苦逼程序员,今天竟然做这种枯燥重复性的工作!对啊,咱是苦逼程序员啊。程序员怎么能总做这些重复的工作呢。这种重复性的工作让代码来做就好了。说干就干,终于研究了两天的时间写了一个类似小爬虫的工具来爬取这些B2B网站的信息。虽然功能很简单,技术含量也不高,但想想怎么也是一个小工具,分享出来,也许大家以后会用到。OK,项目背景介绍完毕,下面开始分享程序的详细信息。

首先写一个获得页面源码的方法:

// 通过url和postdata获取返回值。该函数为主要函数可以copy使用返回值为一个Html页面的数据。
public static String GetResponseDataByID(String url, String postData) {
String content = null;
try {
URL dataUrl = new URL(url);
HttpURLConnection con = (HttpURLConnection) dataUrl
.openConnection();
// System.out.println(con.getResponseCode());
// System.out.println(con.getContentLength());
// con.setRequestMethod("POST");
// con.setRequestProperty("Proxy-Connection", "Keep-Alive");
// con.setDoOutput(true);
// con.setDoInput(true);
// OutputStream os = con.getOutputStream();
// DataOutputStream dos = new DataOutputStream(os);
// dos.write(postData.getBytes());
// dos.flush();
// dos.close();
byte d[] = new byte[4];
String line;
InputStream is = con.getInputStream();
StringBuffer stringBuffer = new StringBuffer();
Reader reader = new InputStreamReader(is, "GBK");
// 增加缓冲功能
BufferedReader bufferedReader = new BufferedReader(reader);
while ((line = bufferedReader.readLine()) != null) {
stringBuffer.append(line + "\n");
}
if (bufferedReader != null) {
bufferedReader.close();
}
content = stringBuffer.toString();
} catch (Exception ex) {
ex.printStackTrace();
}
return content;
}


PS:这里有必要说明一下我要爬取的B2B网站的有关内容,这些网站大都提供了一个搜索功能,在搜索框里填写上想要搜索的公司关键字就可以获得相关公司的一个列表。这里本来是想写一个可以提交POST请求然后获得提交请求后页面的源码的方法,但是在写完之后,有一部分B2B网站禁止以代理的形式提交POST的请求,所以只能改成自己手动填写搜索信息,然后把搜索到的信息列表的地址传过来,获得该页面的源码。在本工具中postdata参数无用。为了以后可以扩展,所以没有删除。Ok,这个方法就可以获得我们想要的一些公司列表了。




搜素到公司列表之后,每个公司都会对应一个url。下一步我们就要去遍历这些公司的url。打开对应公司的url后他是一个公司的介绍页面,这里面没有我想要的信息,要想得到我想要的信息必须还得打开一个“更多详细信息”链接。所以下一步我们还需获得当前页面,然后得到这个链接。对了,这里还写了一个获得一个html页面链接的方法,上面获得所有公司列表的链接也是用的这个方法。这里运用到了一个开源包htmlparser。这个东西功能挺强大的,大家以后可以研究一下。请看获得页面链接的代码,这里我有好几个地方用到,每次都有一个过滤,所以我还设置了一个标志量来区分。




public static Set<String> getHref(String f, int flag) {
Set<String> set = new HashSet<String>();
try {
Parser parser = new Parser(f);
parser.setEncoding("UTF-8");
NodeFilter filter = new NodeClassFilter(LinkTag.class);
NodeList links = new NodeList();
for (NodeIterator e = parser.elements(); e.hasMoreNodes();) {
e.nextNode().collectInto(links, filter);
}
for (int i = 0; i < links.size(); i++) {
LinkTag linktag = (LinkTag) links.elementAt(i);
if (flag == 0
&& linktag.getLink().length() > 12
&& !(linktag.getLink().substring(0, 18)
.equals("http://www.product"))
&& linktag.getLinkText().contains("济南")) {
set.add(linktag.getLink());
} else if (flag == 1
&& (linktag.getLinkText().equals("更多>>") || linktag
.getLinkText().equals("更多>>"))) {
set.add(linktag.getLink());
} else if (flag == 2 && linktag.getLinkText().equals("下一页"))
set.add(linktag.getLink());
}
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(list);
return set;
}


OK,下一步就到了我们想要信息的页面了。这里没什么技术含量。主要是用到的就是一个字符串截取和替换

public static String getPart(String source, String type) {
if (source == null)
return null;
if (source.indexOf(type) != -1) {
source = source.substring(source.indexOf(type));
source = source.substring(0, source.indexOf("</dl>"));
source = source.replace("</dt><dd>", "");
source = source.replace("</dd>", "");
source = source.replace("/p", "");
source = source.replace("\n", "");
source = source + "\r\n";
System.out.println(source);
outFile(source);
return source.trim();
} else
return null;
}


这样获得到相关信息之后,我们就可以把他输出到一个文件里面了。

private static void outFile(String source) {
try {
File file = new File("d:" + File.separator + "老婆资料.txt");
Writer out = null;// 声明字符输出流
out = new FileWriter(file, true);// 表示可以追加
out.write(source);// 写入数据
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}


为了更像一个小软件,我还做了一个swing界面,现在不得不感叹啊,我的界面做的还是依然那么的难看。代码就不上了,很简单,看一下界面吧。哈哈




开始地址即为你要从那页开始的url,因为每天所需要的信息都不一样,所以你要记住你当天弄到第几页了。最好的方法就是一次把你搜索的结果都获取完,差不多有上万条。信息数量就是你想得到的信息条数。

下面看一下爬取到的信息吧:



好了,到此基本上一些详细细节介绍完了,当然这个工具有很多不足的地方,最不足的地方就是每换一个B2B网站都需要修改代码,因为每个网站的架构都不一样,所以用不同的B2B网站都要修改代码。只是小改一下就行。他的大体步骤还是都一样的。由于时间仓促,也没注意什么编码规范问题,仅仅是简单实现功能而已。本文中仅提供了部分代码,如若想得到整个项目源码,请在下面留下您的邮箱。


PS:冯老师,我可没占用专升本的时间,这个小工具是在晚上从图书馆回来的时候写的哈,真的没占用专升本时间,我发誓。哈哈,还是非常感谢,也很感动您老每次的督促。在此表示谢意。

孙老师,最近您老跑哪去了,开学之后一直没见过你,您老是不是也爱玩躲猫猫啊。没有基友的日子真的不好过啊。哈哈。老孙同志啊,有空聚聚哈。

李某某,好好工作,脚踏实地,只要努力,天道勤筹,相信老天不会负有心人的哦。加油,我永远是你最坚实的后盾。不管以后再大的风浪,我们风雨同舟。有我的地方就有咱的小家。最后真心的感谢有你的这七年。相信以后的七十年我们会过得更幸福。


最后给天下所有的妹子说声:找个程序猿就嫁了吧。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_882169.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉有不少同学都很难明白为什么…

【支持升级官方最新版】西部数码主机代理系统模板源码IDC网站源码虚拟主机代理管理系统

【关于升级】此系统为西部数码代理系统源码更改的&#xff0c;所以支持后台更新官方最新补丁&#xff08;已测试&#xff0c;此更新只涉及核心文件及自带模板文件&#xff0c;不包括这个二开的模板文件&#xff09; 【开发环境】ASPACCESS win32位系统【你的服务器需要具备这…

10个优质免费PPT模板下载网站推荐

第1名&#xff1a;PPT汇 网址&#xff1a;www.ppthui.com 是否付费&#xff1a;免费 模板质量&#xff1a;★★★★★ &#xff08;5分&#xff09; 浏览体验&#xff1a;★★★★★ &#xff08;5分&#xff09; 下载体验&#xff1a;★★★★★ &#xff08;5分&#xff09; …

哪里有纯免费的PPT模板下载网站?

百度搜索PPT出来的全是打着免费PPT的幌子进去需要注册、充值VIP的网站&#xff0c;费钱费力。 笔者搜索了好久才找到一个纯免费不需要注册的PPT免费模板下载网站&#xff1a; PPT汇 https://www.ppthui.com 无需注册完全免费值得收藏&#xff01;

网站全站变成灰色实现方式参考

1.前言 近几日&#xff0c;大部分的网站的内容都变成了灰色&#xff0c;包括按钮、图片等等。为了纪念伟人。 在前两天临近下班的时候&#xff0c;接到通知 &#xff0c;手中负责的项目门户网要变成灰色&#xff0c;因为我们做的都和ZF相关&#xff0c;以前没有经历过&#xf…

部署个人网站

1.登录云服务器——云服务器实例——拿到公网ip 2.安装xshell&#xff1a; https://www.netsarang.com/zh/free-for-home-school/ 打开xshell新建会话——名称自取——主机填公网ip——端口号随意&#xff1a;22——点链接输入超管账号和密码&#xff1a;一般账号是root——链…

MVC架构公司数据查询网站_某年某月_新浪博客

整合公司资源&#xff0c;实现跨平台&#xff0c;跨区域&#xff0c;跨数据库 后期准备做供应商报价管理

腾讯云服务器部署和数据库连接——【石家庄正定光辉钢化玻璃厂】网站部署

为了做【石家庄正定光辉钢化玻璃厂】的官方网站&#xff0c;购买了腾讯云服务器CVM和云数据库。 现在将部署的步骤记录一下&#xff08;毕竟是第一次建站&#xff0c;还是登记一下备忘&#xff09;。如果哪里有错误感谢大家斧正。 目录 部署的准备 云环境 开发环境 项目部…

新手必备的SEO优化工具

转载于:https://www.cnblogs.com/r360/p/8314489.html

SEO搜索引擎基础原理

转载于:https://www.cnblogs.com/r360/p/8315078.html

Wordpress播客网站搭建

转载于:https://www.cnblogs.com/r360/p/8315653.html

博客网站更换模板及插件使用

转载于:https://www.cnblogs.com/r360/p/8316036.html

织梦网站基础开发和网站建设

转载于:https://www.cnblogs.com/r360/p/8316374.html

网站优化基础需求的分析

转载于:https://www.cnblogs.com/r360/p/8317472.html

网站导航与草图制作

转载于:https://www.cnblogs.com/r360/p/8322451.html

网站内链优化及详细流程

转载于:https://www.cnblogs.com/r360/p/8323520.html

网站外链优化基础

转载于:https://www.cnblogs.com/r360/p/8323791.html

网站死链接及404页面优化设置

转载于:https://www.cnblogs.com/r360/p/8324400.html

网站被黑的预防及处理设施

转载于:https://www.cnblogs.com/r360/p/8324734.html

百度新算法与网站SEO提升

转载于:https://www.cnblogs.com/r360/p/8364699.html