针对来自本地HTML页面的Android应用进行数据抓取

时间:2016-03-31 12:22:22

标签: java android android-studio web-scraping jsoup

我正在尝试为android的时间表应用程序提取数据信息。 html看起来像这样:

      <td   bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:00</font></td>     
      <td   bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:15</font></td>
      <td   bgcolor='#C0C0C0' colspan='1'><font color='#FFFFFF'>9:30</font></td>

也是这样:

     <td align='left'><font color='#FF0000'>Mobility</font></td>
     </tr>
     </table>
     <table  cellspacing='0' border='0' width='100%'>
     <col align='left' />
     <col align='right' />
     <tr>
     <td align='left'><font color='#000000'>P2016</font></td>
     <td align='right'><font color='#008000'>E.Palin</font></td>
     </tr>
     </table>
     <table  cellspacing='0' border='0' width='100%'>
     <col align='left' />
     <tr>
     <td align='left'><font color='#000080'>22-29, 32-36</font></td>
     </tr>
     </table>

我在Android工作室中使用java和jsoup,我想知道我将如何编写代码,以便我可以获得不同的时间和#34; Mobility&#34; &#34; P2016&#34; &#34; E.Palin&#34;和&#34; 22-29,32-36&#34;出现在我的申请表中?

3 个答案:

答案 0 :(得分:1)

首先,您的HTML没有形成或只是一个样本?

使用Estivate,您可以这样编写JSoup查询:

    File input = new File("C:\\path\\to\\html.html");

    Document document= Jsoup.parse(input , "UTF-8", "/");

    EstivateMapper mapper = new EstivateMapper();
    Result result = mapper.map(document, Result.class);

使用Result类:

    public class Result {

       @Text(select = "font:matchesOwn(.*:.*)")
       public List<String> times;

       @Text(select = "font:not(:matchesOwn(.*:.*))")
       public List<String> others;

    }

您将获得2个列表: 次= [9:00,9:15,9:30],其他= [流动性,P2016,E.Palin,22-29,32-36]

答案 1 :(得分:0)

{{1}}

答案 2 :(得分:0)

jsoup元素支持CSS(或jquery)之类的选择器语法来查找匹配元素

select方法在Document,Element或Elements中可用,并返回Elements列表。

实施例

按标记查找元素,例如td doc.select(&#34; td&#34;);

按ID查找元素,例如#logo doc.select(&#34; #logo&#34;);

按类名查找元素,例如.masthead doc.select(&#34; div.masthead&#34;)。first();

具有属性的元素,例如[href] doc.select(&#34; a [href]&#34;);

try {
        File input = new File("C:\\Users\\manna\\Desktop\\html.html");
        Document doc = Jsoup.parse(input, "UTF-8");
        Elements tableElements = doc.select("td");
        for (Element td: tableElements){
            System.out.println(td.text());
        }
    } catch (IOException ex) {
         ex.printStackTrace();
    }