【问题标题】:Identify Webpage识别网页
【发布时间】:2013-06-04 20:40:22
【问题描述】:

您好,我正在尝试用 Python 解析网页。这个网页在禁区,所以我不能给出链接。在此网页中,您可以进行查询,然后将这些查询发布在添加到同一网页上的表中,但使用新的 url。当我解析页面时,我得到了除了表格之外的所有内容。

我注意到无论我的查询如何,网址总是相同的。所以我总是从我的解析器得到相同的结果,也就是没有查询结果的网页(表格)。但是,如果我检查网页(在 Chrome 中),那么表格及其结果将包含在 HTML 中。我的解析器看起来像这样:

import urllib.request
with urllib.request.urlopen("http://www.home_page.com") as url:
    s = url.read()
#I'm guessing this would output the html source code?
print(s)

那么我的问题是,是否有其他方法可以识别网页,以便我收到网页上发布的所有内容?

【问题讨论】:

  • 是否有一些客户端脚本正在生成/检索表?如果您在浏览器中禁用 javascript 并尝试访问网页会怎样?
  • 感谢您的关心,我只是将条件放入HTML表单和新闻搜索中,然后生成了表格。
  • 对。您的 python 代码只是读取来自 HTTP 请求的原始字符串数据。它无法执行页面中可能存在的任何客户端脚本。另一方面,您的浏览器将“运行”页面并执行任何有效的脚本。您需要使用 Selenium 等浏览器自动化工具来获取您想要的内容。
  • 谢谢 Joel Cornett!,我正在研究 Selenium,希望能解决一些问题。

标签: python html extract


【解决方案1】:

根据您的问题,我认为您正在寻找网络抓取技术

这就是我的建议 您可以使用正则表达式来获取可以以特定模式表示的数据
例如

import urllib,re
siteContent  = urllib.urlopen("http://example.com").read()
GetBoldWords = re.findall(r"<b>[\w\d ]+",siteContent)
print "Bold Words are :"
print getBoldWords

所以在这种情况下,您必须了解更多关于正则表达式 (regular expression) 并获得自己的模式

在某些特定情况下,您可能必须处理客户端(例如,您必须通过来自javascript 的弹出页面提交查询,或者您必须忽略来自javascript 的一些alert,然后您必须使用网络browsers api,你可以使用Selenium来处理这类问题

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2019-08-01
    • 1970-01-01
    • 2012-02-10
    • 2014-04-02
    • 2011-08-09
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多