【问题标题】:Reading values from webpage programmatically以编程方式从网页中读取值
【发布时间】:2014-04-12 12:50:46
【问题描述】:

我不知道它叫什么,但我认为这是可能的

我想写一些东西(不知道确切的名字), 转到网页并从该页面上的下拉框中选择一个值并在选择后从该页面读取值,我不确定它是否称为爬虫或活动,我是新手,但我从其中一个听到了很长时间我的朋友,这是可以做到的,

谁能给我一个先机

谢谢

【问题讨论】:

  • 网页是任意的,还是特定的网页?

标签: c# .net android-activity web-crawler webpage


【解决方案1】:

您需要一个 HTTP 客户端库(可能是 C 语言中的 libcurl,或者它的一些 C# 包装器,或者像 this 这样的一些本机 C# HTTP 客户端库)。

您还需要解析检索到的HTML 内容。所以你可能需要一个HTML parsing library(也许是HTML agility pack)。

如果目标网页几乎是固定的并且具有例如一些 cmets 为了便于查找相关部分,您可能会使用更简单或特别的解析技术。

某些网站可能会发送一个几乎为空的静态 HTML 客户端,而实际页面是由 Javascript 脚本 (Ajax) 动态构建的。那样的话,你就不走运了。

也许你想要一些web service ....

【讨论】:

    【解决方案2】:

    一种简单的方法(但不是最有效的方法)是使用WebClient 将网页读取为String,例如:

    WebClient Web = new WebClient();
    String Data = Web.DownloadString("Address");
    

    现在,由于 HTML 只是一个 XML 文档,您可以将字符串解析为 XDocument 并查找代表下拉框的标记。将字符串解析为 XDocument 是这样完成的:

    XDocument xdoc = XDocument.Pase(Data);
    

    更新:

    如果您想读取所选值的结果,并且该结果显示在页面中,请执行以下操作:

    按照我的说明获取所有物品。 如果页面不使用模型,那么您可以使用您选择的值作为参数,例如:

    www.somepage.com/Name=YourItem?
    

    再读一遍页面,找到值

    【讨论】:

    • 我需要从该网页的下拉框中选择一个值,然后读取这些值
    • 好吧,在这种情况下,有多种情况,一种是选择的值导致打开一个新页面,其中将显示您的值,这可能通过我的回答,您需要生成根据所选项目的地址并重新下载页面。但是,如果您的值显示在页面中的某个位置,例如文本字段,那么使用这种方法是不可能静态实现的。
    • vectonemobile.co.uk/pay-as-you-go/vm-rates/standard/…> 在此页面上当我更改下拉框 URL 上的值时没有更改,可能是某种动态/ajax?
    • @Srikanth:如果下拉菜单是“现收现付”、“按月支付”等,那么问题就太容易了,只需获取链接即可,例如免费 sim 链接存储在此tag : Free SIM,使用 XDocument 找到元素后查找 href 值。
    猜你喜欢
    • 2010-09-28
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多