【问题标题】:Simple Dynamic Web Scraping - Without BeautifulSoup简单的动态网页抓取 - 没有 BeautifulSoup
【发布时间】:2013-01-21 20:26:25
【问题描述】:

我正忙于抓取一个动态网站,以获取一个 URL,每次更新游戏时我都可以使用该 URL 下载游戏的服务器软件。

该网站是“http://craftstud.io/builds”,上面写着“服务器 XX.X.X.X”是我要抓取的内容。

我真的不希望它因 Javascript 和外部模块而变得复杂,所以如果有一个简单的解决方案,我会全力以赴。

我也无法安装第三方模块,例如 BeautifulSoup (Stupid Windows)。

谢谢大家!

【问题讨论】:

  • 我相信有时不安装第 3 方模块是有正当理由的;在您的情况下,您可以学习如何在 Windows 中使用 easy_install 或 pip。这可以通过一些谷歌搜索很容易地完成,并且您将不再局限于标准库
  • Windows 出了什么问题?您可以使用 pip/easy_install 安装任何模块,也可以直接放入项目目录中。
  • 使用标准库解析 html 比安装第三方模块要复杂得多。试着去做,如果你遇到困难,回来寻求帮助。
  • @dm03514 - 是的,有正当理由。我正忙于在 Windows 上为 Linux 编程,我最终可能会在多个 Linux VPS 上分发脚本。因此,我不想最终对所有试图查找缺失模块的服务器进行故障排除。

标签: python dynamic web screen-scraping


【解决方案1】:

如果你想要一些简单的东西,可以考虑使用简单的regular expression

>>> import re
>>> import urllib2
>>> html = urllib2.urlopen("http://craftstud.io/builds").read()
>>> re.search(r"Server \d+\.\d+\.\d+\.\d+", html).group()
'Server 0.1.24.1'

也就是说,如果您可以通过 pip 安装 BeautifulSoup4,那么您将来会发现它有很多用途。 (请确保您使用pip install BeautifulSoup4 而不仅仅是pip install BeautifulSoup 我几天前刚刚在Windows 机器上安装了一个副本。)

【讨论】:

  • 嘿,谢谢你的例子。但是我没有使用完全相同的方法。我最终将 re.search 替换为字符串加“.*\”,这表示任何字符,* 表示连续重复,然后 \ 表示当你找到之后的文本时停止重复。不过谢谢!
猜你喜欢
  • 2018-01-18
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
相关资源
最近更新 更多