首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为JSOUP导入URL以通过电子表格进行抓取

为JSOUP导入URL以通过电子表格进行抓取
EN

Stack Overflow用户
提问于 2018-07-29 13:24:13
回答 1查看 355关注 0票数 0

我终于让IntelliJ开始工作了。我正在使用下面的代码。它工作得很完美。我需要它一遍又一遍地循环,从电子表格中拉出链接,一遍又一遍地找到不同项目的价格。我有一个电子表格,其中有几个示例URL位于列C中,从第2行开始。如何让JSOUP使用此电子表格中的URL,然后输出到D列?

代码语言:javascript
运行
复制
public class Scraper {

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

    final Document document = Jsoup.connect("examplesite.com").get();

    for (Element row : document.select("#price")) {

        final String price = row.select("#price").text();

        System.out.println(price);
    }
}

提前感谢您的帮助!埃里克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 01:41:02

您可以使用JExcel库来读取和编辑图纸:https://sourceforge.net/projects/jexcelapi/

当你下载带有库的压缩文件时,也有非常有用的tutorial.html

评论中的解释:

代码语言:javascript
运行
复制
import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.CellType;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

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

public class StackoverflowQuestion51577491 {

    private static final int URL_COLUMN = 2; // Column C
    private static final int PRICE_COLUMN = 3; // Column D

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

        // open worksheet with URLs
        Workbook originalWorkbook = Workbook.getWorkbook(new File("O:/original.xls"));
        // create editable copy
        WritableWorkbook workbook = Workbook.createWorkbook(new File("O:/updated.xls"), originalWorkbook);
        // close read-only workbook as it's not needed anymore
        originalWorkbook.close();
        // get first available sheet
        WritableSheet sheet = workbook.getSheet(0);
        // skip title row 0
        int currentRow = 1;
        Cell cell;
        // iterate each cell from column C until we find an empty one
        while (!(cell = sheet.getCell(URL_COLUMN, currentRow)).getType().equals(CellType.EMPTY)) {
            // raed cell contents
            String url = cell.getContents();
            System.out.println("parsing URL: " + url);
            // parse and get the price
            String price = parseUrlWithJsoupAndGetProductPrice(url);
            System.out.println("found price: " + price);
            // create new cell with price
            Label cellWithPrice = new Label(PRICE_COLUMN, currentRow, price);
            sheet.addCell(cellWithPrice);
            // go to next row
            currentRow++;
        }
        // save and close file
        workbook.write();
        workbook.close();
    }

    private static String parseUrlWithJsoupAndGetProductPrice(String url) throws IOException {
        // download page and parse it to Document
        Document doc = Jsoup.connect(url).get();
        // get the price from html
        return doc.select("#priceblock_ourprice").text();
    }
}

之前:

之后:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51577491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档