使用crawler4j获取html页面中存在的所有iframe,base64代码

苏迪·库玛(Sudhir kumar)

我正在使用crawler4j抓取某些网站,并且工作正常。我能够下载网站上存在的所有文件,现在我还有一个新任务。如果可能,我还需要提取iframe,base64和其他嵌入式代码!

到现在为止,我的访问方式是

 String place="<iframe";
 if (page.getParseData() instanceof HtmlParseData) {
                 HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();
                 String text = htmlParseData.getText();
                 String html = htmlParseData.getHtml();
                 List<WebURL> links = htmlParseData.getOutgoingUrls();
                 System.out.println("Text length: " + text.length());
                // System.out.println("html sorce code:- "+html);
                 int number=html.length();
                 String[] result=html.split("\\s");
                 System.out.println("print random word"+result[12500]+number);
                 int i;
                 for(i=0;i<number;i++)
                 {
                     if(result[i].equals(place))
                     {
                         System.out.println("iframe found"+i);
                     }
                 }
                 System.out.println("Text length: " + text.length());
                 System.out.println("Html length: " + html.length());
                 System.out.println("Number of outgoing links: " + links.size());
                 }

我已经添加了上述if案例,以获取给定html页面的iframe。它几乎可以完美地工作了。

我知道这是从html页面提取iframe的一种不好的方法。我尝试了许多其他方法从html页面提取iframe和其他嵌入式代码,但是失败了。在查看源代码之后,我发现了一个可以满足我要求java类从上面的url中可以看到,我必须在HtmlContentHandler类中使用必要的参数调用startElemnt方法,以获取所需的代码。

`public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException` 
{
}

因此,在我的visit方法中,我创建了一个HtmlContentHandler对象,并尝试调用上述的startElement方法。

HtmlContentHandler ecode=new HtmlContentHandler();
 ecode.startElement(url,localName,qName,attributes);

现在问题出在该方法的参数上。我正在发送为url参数抓取的url值,但我不知道其余参数必须发送什么值!

有人可以帮我吗?我还知道还有很多其他工具可以使我的工作变得轻松,但是我想改为在crawler4j中做到这一点!

谢谢!!

波斯尼亚克

我不太用Java,也没用过crawler4j,但这是我的两分钱。

您所引用HtmlContentHandler的类是用作HtmlParser实际处理程序的类,用于从解析的网页中提取链接。
就是说,您不是应该调用该startElement()函数的人,而是解析器针对遇到的每个元素都将调用该函数。并在调用这些参数时填充这些参数,以使您知道元素的详细信息。
这将是一个示例(未经测试,我真的不知道自己在做什么):

HtmlParser htmlParser = new HtmlParser();
HtmlContentHandler contentHandler = new HtmlContentHandler();
// I presume the `Page page` is present in the scope
InputStream inputStream = new ByteArrayInputStream(page.getContentData());
Metadata metadata = new Metadata();
ParseContext parseContext = new ParseContext();
// and finally parse
htmlParser.parse(inputStream, contentHandler, metadata, parseContext);

如果要修改内容处理程序的行为,则应以类似的方式重写ContentHandler方法并重写startElement()自己HtmlContentHandler您可以根据需要调查这些函数参数的内容,它可以使您更好地理解...

但是有一点我可能完全错了:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在crawler4j中停用RobotServer

来自分类Dev

crawler4j中WebCrawler的参数

来自分类Dev

crawler4j中WebCrawler的参数

来自分类Dev

如何使用 PDF.js 显示 PDF(存储在 base64)中的所有页面?

来自分类Dev

Groovy中的Crawler(JSoup VS Crawler4j)

来自分类Dev

json Webservice,它将传递将转换为图像的Base64代码

来自分类Dev

改善crawler4j的性能

来自分类Dev

Crawler4j缺少传出链接?

来自分类Dev

有没有办法在HTML中多次使用同一代码(代码可重用性)?

来自分类Dev

Crawler4j与Jsoup在Java中进行页面爬取和解析

来自分类Dev

JS:如何将image.png编码为base64代码以进行数据URI嵌入?

来自分类Dev

JS:如何将image.png编码为base64代码以进行数据URI嵌入?

来自分类Dev

使用 Base64 和 Cors 从 Image 中删除所有空白

来自分类Dev

硒-获取页面中的所有iframe(甚至是嵌套的)?

来自分类Dev

使用Grails应用程序的Crawler4j引发错误

来自分类Dev

Crawler4j可以在robots.txt中使用星号(*)解释通配符吗?

来自分类Dev

使用Grails应用程序的Crawler4j引发错误

来自分类Dev

Crawler4j可以在robots.txt中使用星号(*)来解释通配符吗?

来自分类Dev

Base64:如何编码/解码页面的整个HTML代码

来自分类Dev

如何检查Java 4位代码中是否有双字母

来自分类Dev

crawler4j抓取网站无法正常工作

来自分类Dev

Crawler4j with Grails App throws error

来自分类Dev

crawler4j打印大量系统输出

来自分类Dev

如何为Crawler4J编写自己的异常处理?

来自分类Dev

Crawler4J为null,同时处理(链接)错误

来自分类Dev

最新的S4代码中不存在org.apache.s4.core.staging包

来自分类Dev

PDF.js:在iframe中使用postMessage将base64传递给viewer.html

来自分类Dev

从 URI 中获取文件 base64

来自分类Dev

使用javascript获取base64图像

Related 相关文章

  1. 1

    在crawler4j中停用RobotServer

  2. 2

    crawler4j中WebCrawler的参数

  3. 3

    crawler4j中WebCrawler的参数

  4. 4

    如何使用 PDF.js 显示 PDF(存储在 base64)中的所有页面?

  5. 5

    Groovy中的Crawler(JSoup VS Crawler4j)

  6. 6

    json Webservice,它将传递将转换为图像的Base64代码

  7. 7

    改善crawler4j的性能

  8. 8

    Crawler4j缺少传出链接?

  9. 9

    有没有办法在HTML中多次使用同一代码(代码可重用性)?

  10. 10

    Crawler4j与Jsoup在Java中进行页面爬取和解析

  11. 11

    JS:如何将image.png编码为base64代码以进行数据URI嵌入?

  12. 12

    JS:如何将image.png编码为base64代码以进行数据URI嵌入?

  13. 13

    使用 Base64 和 Cors 从 Image 中删除所有空白

  14. 14

    硒-获取页面中的所有iframe(甚至是嵌套的)?

  15. 15

    使用Grails应用程序的Crawler4j引发错误

  16. 16

    Crawler4j可以在robots.txt中使用星号(*)解释通配符吗?

  17. 17

    使用Grails应用程序的Crawler4j引发错误

  18. 18

    Crawler4j可以在robots.txt中使用星号(*)来解释通配符吗?

  19. 19

    Base64:如何编码/解码页面的整个HTML代码

  20. 20

    如何检查Java 4位代码中是否有双字母

  21. 21

    crawler4j抓取网站无法正常工作

  22. 22

    Crawler4j with Grails App throws error

  23. 23

    crawler4j打印大量系统输出

  24. 24

    如何为Crawler4J编写自己的异常处理?

  25. 25

    Crawler4J为null,同时处理(链接)错误

  26. 26

    最新的S4代码中不存在org.apache.s4.core.staging包

  27. 27

    PDF.js:在iframe中使用postMessage将base64传递给viewer.html

  28. 28

    从 URI 中获取文件 base64

  29. 29

    使用javascript获取base64图像

热门标签

归档