我如何从网站上提取一些数据并通过电子邮件发送

时间:2011-04-23 14:44:16

标签: java php parsing

作为一个例子,假设我想要我的程序

  1. 每天Vist stackoverflow
  2. 找出当天某个标签中的大多数问题
  3. 对其进行格式化,然后将其发送到我的电子邮件地址
  4. 我不知道该怎么做,我知道php更多,但我有一些Java,j2ee,spring MVC但不是java网络编程的

    我应该怎么去

5 个答案:

答案 0 :(得分:1)

我首先看一下Stack Exchange API

答案 1 :(得分:1)

您可以做的是提取url的内容并将其写入字符串缓冲区,然后使用JSOUP.jar(用于解析html元素)解析html字符串以获取您选择的内容。我有一个小的样本完全按照我将url的所有内容读入字符串然后根据CLASS TAG解析内容(在这种情况下是问题超链接)

package com.tps.examples;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class URLGetcontent {

    public static void main(String args[]) {

        try {

            URL url = new URL("http://stackoverflow.com/questions");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);

            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            StringBuffer str = new StringBuffer();

            while ((line = rd.readLine()) != null) {
                // System.out.println(line);
                str.append(line);
            }

            Document doc = Jsoup.parse(str.toString());
            Elements content = doc.getElementsByClass("question-hyperlink");

            for (int i = 0; i < content.size(); i++) {
                System.out.println("Question: " + (i + 1) + ".  " + content.eq(i).text());
                System.out.println("");
            }
            System.out.println("*********************************");

        } catch (Exception e) {

        }
    }
}

提取数据后,您可以使用javamail课程在电子邮件中发送内容。

答案 2 :(得分:0)

在PHP中使用file_get_contents(),你也可以通过HTTP获取文件:

$stackoverflow = file_get_contents("http://stackoverflow.com");

然后你必须解析这个。对于许多站点,您可以通过JSON或XML请求特殊的API。

如果您知道shell脚本(这是我为许多网站执行的方式 - 使用cronjob很好:) :)然后您可以使用sedwgetw3m,{ {1}},grep来做...

答案 3 :(得分:0)

StackOverflow和其他stackexchange站点提供了一个简单的API(stackapps)。你请看看。

答案 4 :(得分:0)

当您想要从网站(即通过HTTP)检索数据时,您可能希望使用已经用Java或PHP编写的许多HTTP客户端之一。

Apache HTTP Client是许多人使用的优秀Java客户端。如果您正在调用RESTful接口,Jersey有一个不错的客户端库。

在PHP方面,有人已经提到过file_get_contents ......但你也可以查看cURL library

就电子邮件而言,有一个JavaMail API(我承认我不熟悉它),或者根据您的电子邮件服务器,您可能会跳过其他环节(例如Exchange可以通过其SOAP接口发送电子邮件) 。)