如何用 Java 以编程方式下载网页

2024-04-24

我希望能够获取网页的 html 并将其保存到String,这样我就可以对其进行一些处理。另外,我如何处理各种类型的压缩。

我将如何使用 Java 来做到这一点?


我会使用像样的 HTML 解析器Jsoup http://jsoup.org。那么就很简单:

String html = Jsoup.connect("http://stackoverflow.com").get().html();

它完全透明地处理 GZIP 和分块响应以及字符编码。它也提供了更多优点,如 HTML穿越 http://jsoup.org/cookbook/extracting-data/selector-syntax and 操纵 http://jsoup.org/cookbook/modifying-data/set-html通过 CSS 选择器,就像 jQuery 一样。你只需要把它抓住Document,不作为String.

Document document = Jsoup.connect("http://google.com").get();

你真的don't http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html想要在 HTML 上运行基本的 String 方法甚至正则表达式来处理它。

也可以看看:

  • Java 中领先的 HTML 解析器的优缺点是什么? https://stackoverflow.com/questions/3152138/what-are-the-pros-and-cons-of-the-leading-java-html-parsers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用 Java 以编程方式下载网页 的相关文章

随机推荐

  • 正则表达式:如何匹配包含重复模式的字符串?

    是否有一个正则表达式模式可以匹配包含重复模式的字符串 例如 a b c d y z 你有什么主意吗 也许您正在寻找这样的东西 这将匹配以逗号分隔的表单序列列表 where and 可以是任何字符
  • 使自定义 monad 转换器成为 MonadError 的实例

    我想让我的 monad 转换器成为一个实例MonadError如果转换后的单子是一个实例 基本上我希望我的变压器的行为与内置变压器一样 例如有一个MonadError实例为StateT MonadError e m gt MonadErro
  • 如何从另一个 sbt 项目引用外部 sbt 项目?

    我对 Scala 应用程序和通用核心库进行了以下设置 根 gt ApplicationA gt project gt build sbt gt CoreLibrary gt project gt build sbt 我想将 Applicat
  • 将 Yup 验证错误转换为可用对象

    Problem 我有一个 formik 表单 需要有 2 个不同的验证模式 具体取决于用户使用哪个按钮提交 我看到有些人说使用状态来决定哪个 但我想避免使用状态 因为在这种情况下感觉不对 我看过是的文档 https www npmjs co
  • 格式化整数时 printf 中的精度字段

    当我执行这两行时 printf 5d n 3 use of precision filed printf 05d n 3 use of 0 flag to prepend with 0 我得到以下输出 00003 00003 结果相同 所以
  • Google 字体无法在移动设备中加载

    我读过类似的帖子 但这个问题有点不同 我有 rest of the code 在 css 样式文件中我有 body font family Source Sans Pro sans serif rest of the code 它在浏览器中
  • 将新对象附加到 JSON 文件中的数组

    如何将附加对象添加到现有 JSON 文件 即对象数组 中 这是我的 JS 代码 const fs require fs let Human Name John age 20 Human JSON stringify Human null 2
  • 自动完成搜索字符串的多个部分,然后返回最可能的部分

    有点像这个问题 https stackoverflow com questions 824144 how do i use jquery autocomplete for multiple words 我有很多文本片段 每天都会使用很多很多
  • 使用 nokogiri 干式搜索网站的每个页面

    我想搜索网站的每个页面 我的想法是找到页面上保留在域内的所有链接 访问它们 然后重复 我也必须采取措施 避免重复努力 所以开始很容易 page http example com nf Nokogiri HTML open page link
  • Azure Functions 中 PowerShell 脚本的选项在哪里

    我想使用 PowerShell 创建 Azure Function 当我谈到 Azure 希望我选择要创建的函数类型时 唯一可用的语言是 C F 和 JavaScript 我错过了什么吗 如何使用 PowerShell 创建 Azure 函
  • 尝试使用 Comparator 按名称排序、忽略大小写以及先处理空值

    我在使用 Java 8 Comparator 类对项目列表进行排序时遇到问题 我当前的工作比较器如下 comparator Comparator comparing Person getName Comparator nullsFirst
  • Android 中从时间戳获取日期名称

    我有一个类 当它初始化时 它会使用公共 getter 在私有字段中记录初始化时间 public class TestClass private long mTimestamp public TestClass mTimestamp Syst
  • 每个 ajax 请求都会调用 preRenderView

    我正在使用 jquery waypoints 和 jsf 实现无限滚动link http kahimyang info kauswagan code blogs 1405 building a page with infinite scro
  • CSS自定义组合框问题

    我需要一个自定义组合框 所以 我实施了ul 问题是我无法通过单击在顶部打开组合框列表button 展示的同时ul 它移动button到网页底部 Code ul width 100px background color rgb 224 224
  • 在 Emacs 中定义新的工具提示

    我想向 emacs 添加自定义工具提示 更具体地说 每当我将鼠标悬停在符号 函数 变量 名称上时 用我的鼠标我想看到带有符号定义的工具提示 我知道我可以使用 cscope 这样的工具找到此类信息 但我不知道如何找到 将 cscope 的输出
  • 运行烘焙命令时出现 SQLSTATE HY000 2002

    我在运行烘焙命令时遇到问题 我认为它与 mysql 有关 但我在 Stackoverflow 上没有找到此错误的任何解决方案 这是我的app php Datasources gt default gt className gt Cake D
  • Kafka的消息键有什么特别的地方吗?

    我没有看到任何提及消息键 org apache kafka clients producer ProducerRecord key 除了它们可以用于主题分区 我可以自由地将我喜欢的任何数据放入密钥中 还是有一些我应该遵守的特殊语义 该密钥似
  • 分组时间序列(面板)数据的交叉验证

    我使用面板数据 随着时间的推移 我观察许多单位 例如人 对于每个单元 我都有相同固定时间间隔的记录 当将数据分为训练集和测试集时 我们需要确保这两个集是不相交的并且顺序的 即训练集中的最新记录应该在测试集中最早的记录之前 参见例如此博客文章
  • 如何使用可用内存有效地比较 1,000 张图像

    这是一个棘手的问题 我的磁盘中存储了大约 1 000 张图像 我想通过成对比较来找到彼此相似的图像 所以我必须做周围1 000 999 2 https stackoverflow com questions 46958633 generat
  • 如何用 Java 以编程方式下载网页

    我希望能够获取网页的 html 并将其保存到String 这样我就可以对其进行一些处理 另外 我如何处理各种类型的压缩 我将如何使用 Java 来做到这一点 我会使用像样的 HTML 解析器Jsoup http jsoup org 那么就很