"数据挖掘"来自网站

时间:2016-01-14 13:25:43

标签: python shell

我的一位朋友希望从某些网页获取一些数据。他想用XML编写,因为他会将它们提供给一些强大的应用程序。

这不是问题,任何脚本语言都可以做到这一点。问题是,内容是隐藏的"并且只能在用户登录时看到。这意味着,无论我使用何种语言,我都必须找到一种模拟网络浏览器的方法 - 存储cookie(会话ID),因为没有它,我无法从网站的受限制部分获取数据。

我不希望自己编写自己的网络浏览器"但我不确定是否需要。我认为,必须有一个库。有什么想法吗?

是的,我们向他们询问了API,数据转储等。他们不想合作。

感谢您的任何提示。

4 个答案:

答案 0 :(得分:4)

尝试Scrapy http://scrapy.org/框架。它支持cookie,重定向,以及几乎任何你想要支持的好的爬行活动。除了Javascript。

如果您需要Javascript,请查看phantomjs http://phantomjs.org/

Scrapy是在Python中,但是大多数语言都有相同的库。去追捕他们!

答案 1 :(得分:2)

我使用BeautifulSoup解析HTML,还有Scrapy 尝试用谷歌搜索网页收集'或者'网页抓取'并看看最适合你的。

答案 2 :(得分:2)

如果你需要在网页抓取时处理JavaScript,你可以使用Selenium(python库)+ PhantomJS(没有网页图形渲染的网络浏览器)。它允许模拟用户在网站上的行为。

但如果唯一的障碍是处理登录网站的隐藏部分,您可以尝试使用请求 python库发送带有必需标头数据(用户名和密码)的POST请求,接收cookie然后使用GET请求来刮取数据。在这种情况下,会话()对象会为您保留Cookie:

import requests

session = requests.Session()

login_form_data = {'username': 'user', 'password': 'pass123'}
req = session.post('http://anyweb.com/login.php', login_form_data)
req = session.get('http://anyweb.com/anypage.php')
response_data = req.text

答案 3 :(得分:1)

为了便于使用,请尝试使用Selenium。

虽然与使用无头浏览器相比速度较慢,但​​好处是您不需要使用其他库来启用Javascript,因为您的脚本将模拟真实的人类浏览网站。您还可以直观地检查脚本的行为,因为它会在浏览器中打开网站。

您也可以轻松找到样板代码和相关教程:)