2009-10-09 59 views
1

我需要编写脚本进入网站,登录,导航到页面并下载(以及解析后)该页面的html。如何使用脚本浏览网站以获取信息

我想要的是一个独立的脚本,而不是控制Firefox的脚本。我不需要任何JavaScript支持,只需简单的HTML导航。

如果没有什么容易做到这一点存在..那么通过网络浏览器(火狐或Safari浏览器,我在Mac上)的行为。

感谢

+2

什么是脚本语言选项? – 2009-10-09 20:25:58

+0

红宝石和bash会很好。我可以与其他语言(python perl etc) – luca 2009-10-10 08:15:10

+0

!!!如果任何人可以做一个脚本,请告诉如何: 去www.webpoliself.polimi.it,按照重定向,并得到一个页面,其网址是类似https://www10.ceda.polimi.it/polijtweb/......你不能直接去那里,因为它会在几个小时后中断,所以我想有一些重定向中涉及的cookies。 – luca 2009-10-10 09:21:46

回答

1

我不知道预构建的通用刮板,但您可能能够通过Google找到一个。

写一个web刮板绝对是可行的。在我非常有限的经历中(我只写了一对),我不需要处理登录/安全问题,但是在谷歌搜索中我看到了一些处理它们的例子 - 害怕我不记得这些页面的URL 。我确实需要了解一些关于我正在抓取的页面的细节;这样可以更容易地编写刮刀,但是,当然,刮刀仅限于在这些页面上使用。但是,如果您只是抓取整个页面,则可能只需要相关页面的URL。

不知道你会接受哪种语言,很难提供更多的帮助。 FWIW,我已经在PHP和Python中完成了刮板。正如Ben G.所说的那样,PHP对此有帮助,也许还有更多,但我不太了解PHP。 Python有几个模块可供选择,包括lxml,BeautifulSoupHTMLParser

编辑:如果你使用的是Unix/Linux(或者我认为是CygWin),你可以用wget来达到你想要的效果。

0

这可能是一个愚蠢的问题,因为我没有MAC的知识,但什么语言都是我们在这里谈论,而且这是一个网站,你有控制权,或者像谷歌在检查页面内容时可能使用的蜘蛛机器人一样?我知道在C#中,您可以使用HttpWebRequest和流式阅读器加载其他站点上的对象...在Java脚本中(如果知道SUPPOSED在那里,这只会真正起作用),您可以打开网页iframe的来源,并使用java脚本遍历页面上所有元素的内容......或者更好的是,使用jquery。

0

我需要编写一个脚本,转到网站,登录,导航到页面并下载(以及解析后)该页面的html。

对我来说,这听起来像一个POST或GET请求的登录页面的URL可以做的job.With正确的参数用户名和密码(取决于页面上使用的表单输入名称)设置该请求,结果将是您可以随意解析的页面的html。

这可以用几乎任何语言来完成。你想用什么语言?

+0

是的,你是对的我可以做到这一点。但我希望有更复杂的任务,但是我会用红宝石来尝试这种方式。 – luca 2009-10-10 08:11:55

0

我最近刚刚在C#项目中做了什么。如果需要登录,您的第一个请求可能是帖子并包含凭据。响应通常包括在随后的请求中保留身份的cookie。使用Fiddler可以查看当您正常使用浏览器登录时,将何种格式的数据(字段名称和值)发布到服务器。一旦你有了这个,你可以用表单数据构造一个HttpWebRequest,并将响应中的cookie存储在CookieContainer中。

下一步是对您实际需要的内容提出请求。这将是附加CookieContainer的另一个HttpWebRequest。响应可以通过StreamReader读取,您可以读取并转换为字符串。

每次我这样做时,通常都是一个相当费力的过程来识别所有相关的表单数据并手动重新创建请求。广泛使用Fiddler并比较浏览器在正常使用站点时发出的请求与来自脚本的请求。您可能还需要操作请求标头;再次,使用Fiddler手动构建这些代码,让它们正确提交并按照您的预期进行响应,然后对其进行编码。祝你好运!