java通过正则表达式抓取网页数据
例如在基金网的源代码view-source:http://fund.eastmoney.com/fund.html网页上的这一段id="tr000057"><tdclas...
例如在基金网的源代码view-source:http://fund.eastmoney.com/fund.html网页上的这一段 id="tr000057"><td class="gz"><a class="noAtt" title="点击关注"></a></td><td class="tor"><input type="checkbox" id="000057"/></td><td>1</td><td>000057</td><td class="tol"><nobr><a href="000057.html">中银消费主题股票</a><a href="http://fund2.eastmoney.com/topic,000057.html">基金吧</a><a href="f10/000057.html">档案</a></nobr></td><td class="TD2">1.0580</td><td class="TD2">1.0580</td><td class="TD2">1.0460</td><td class="TD2">1.0460</td><td class=' red'>0.0120</td><td class='bg red'>1.15%</td><td>开放申购</td><td>开放赎回</td><td>---</td><td>---</td><td class='pd'><p></p></td><tr id="tr240009"><td class="gz"><a class="noAtt" title="点击关注"></a></td><td class="tor"><input type="checkbox"
输入它的代码000057就能输出它的价位1.0580。求各位大神!!! 展开
输入它的代码000057就能输出它的价位1.0580。求各位大神!!! 展开
3个回答
展开全部
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern p = Pattern.compile("(?<=<td>).*(?=</td>)");
String str ="<td>20分钟</td>";
Matcher m = p.matcher(str);
while(m.find())
System.out.println(m.group());
}
}
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.tianya.cn/publicforum/content/english/1/129176.shtml");
// 打开连接
URLConnection conn = url.openConnection();
// 设置连接网络超时时间
conn.setConnectTimeout(1000 * 10);
// 读取指定网络地址中的文件
BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String regex = "[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?"; // 匹配email的正则
Pattern p = Pattern.compile(regex);
while((line = bufr.readLine()) != null) {
Matcher m = p.matcher(line);
while(m.find()) {
System.out.println(m.group());<span style="white-space:pre"> </span>// 获得匹配的email
}
}
}
给你两个例子,你看下。。就应该懂得原理了。
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern p = Pattern.compile("(?<=<td>).*(?=</td>)");
String str ="<td>20分钟</td>";
Matcher m = p.matcher(str);
while(m.find())
System.out.println(m.group());
}
}
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.tianya.cn/publicforum/content/english/1/129176.shtml");
// 打开连接
URLConnection conn = url.openConnection();
// 设置连接网络超时时间
conn.setConnectTimeout(1000 * 10);
// 读取指定网络地址中的文件
BufferedReader bufr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
String regex = "[a-zA-Z0-9_-]+@\\w+\\.[a-z]+(\\.[a-z]+)?"; // 匹配email的正则
Pattern p = Pattern.compile(regex);
while((line = bufr.readLine()) != null) {
Matcher m = p.matcher(line);
while(m.find()) {
System.out.println(m.group());<span style="white-space:pre"> </span>// 获得匹配的email
}
}
}
给你两个例子,你看下。。就应该懂得原理了。
追问
谢谢,可以给我写一个吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要采集金融数据啊,我仔细看了这个基金的页面,貌似不难的,用新出的网页采集神器八爪鱼采集器试了一下,几分钟就采集了很多基金下来,你自己试一下吧,工具挺好的,也很难得是免费的。
追问
我是想编一个程序来抓取,你会吗,可以教我下吗?
追答
程序我不太会啊,我会用八爪鱼采集器,你要不会用我可以教你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我擦,你这里的怎么是50分的,我回答了30分的...亏了
追问
那个也是我啊,可以教我吗,可以给分
追答
我qq发你私信了,那个还不行吗
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询