0

抱歉,如果这是一个大问题,但我只是想找人告诉我要在哪个方向学习更多,因为我不知道,我对 HTML 和 Java 有非常基本的了解。

我家里有人必须将供应商的每件产品复制到他自己的网上商店。问题是他需要手动把所有的文章都一个一个的放进去,我正在想办法用一个程序来代替他。

我已经开始计算价格了,我现在需要的只是产品信息。

http://pastebin.com/WVCy55Dj

从第 1009 行到 1030 左右。我需要三个跨度的 3 个单独的字符串,其类为“CatalogusListDetailTest” 从第 987 行到 1000 左右。我需要一种获取所有这些图像的方法,它位于网站 www.flamingo.be/ Images/Products/Large/"productID"(our first string).jpg 有时会有一个 _A , _B 正如你在这个例子中看到的那样,所以我正在寻找一种方法来检查是否存在并获取这些图像。

如果我能走到这一步,我将非常感激!我会自己解决剩下的问题,很抱歉这篇文章很长,想提供尽可能多的信息。

4

2 回答 2

0

您可以查看 HTML parser lib Jsoup,文档参考:http: //jsoup.org/cookbook/

编辑:获取产品代码的代码:

    Elements classElements = document.getElementsByClass("CatalogusListDetailTextTitel");
            for (Element classElement : classElements) {
                if (classElement.text().contains("Productcode :")) {
                System.out.println(classElement.parent().ownText());
                }
            }

上面的代码将打印所有产品代码,而不是document您可能必须使用元素来获得一致的结果。

于 2013-03-02T12:29:01.410 回答
0

您可以根据需要使用JTidy

代码示例:

public void downloadSinglePage(String pageLink, String targetDir) throws XPathExpressionException, IOException {
                URL url = new URL(pageLink);
                BufferedInputStream page = new BufferedInputStream(url.openStream());

                Tidy tidy = new Tidy();
                tidy.setQuiet(true);
                tidy.setShowWarnings(false);
                Document response = tidy.parseDOM(page, null);

                XPathFactory factory = XPathFactory.newInstance();
                XPath xPath=factory.newXPath();
                NodeList nodes = (NodeList)xPath.evaluate(IMAGE_PATTERN, response, XPathConstants.NODESET);

                String imageURL = (String) nodes.item(0).getNodeValue();
                saveImageNIO(imageURL, targetDir);

        }

在哪里

IMAGE_PATTERN = "///a/img/@src";

但模式取决于图像如何嵌入到页面 HTML 代码中。

使用NIO保存图像的方法:

public void saveImageNIO(String imageURL, String targetDir, String imageName) throws IOException {
            URL url = new URL(imageURL);
            ReadableByteChannel rbc = Channels.newChannel(url.openStream());
            FileOutputStream fos = new FileOutputStream(targetDir + "/" + imageName + ".jpg");
            fos.getChannel().transferFrom(rbc, 0, 1 << 24);
        }
于 2013-03-02T15:07:55.553 回答