我的一位朋友希望从某些网页获取一些数据。他想用XML编写,因为他会将它们提供给一些强大的应用程序。
这不是问题,任何脚本语言都可以做到这一点。问题是,内容是隐藏的"并且只能在用户登录时看到。这意味着,无论我使用何种语言,我都必须找到一种模拟网络浏览器的方法 - 存储cookie(会话ID),因为没有它,我无法从网站的受限制部分获取数据。
我不希望自己编写自己的网络浏览器"但我不确定是否需要。我认为,必须有一个库。有什么想法吗?
是的,我们向他们询问了API,数据转储等。他们不想合作。
感谢您的任何提示。
答案 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,因为您的脚本将模拟真实的人类浏览网站。您还可以直观地检查脚本的行为,因为它会在浏览器中打开网站。
您也可以轻松找到样板代码和相关教程:)