登录到站点以使用Python进行web刮取

登录到站点以使用Python进行web刮取,python,web,screen-scraping,Python,Web,Screen Scraping,我想从一个有初始登录(我有工作凭证)的网站上抓取数据。这是不可能检查的代码,在这是一个登录,在访问网站前弹出。我试着四处搜索,但没有找到任何答案——也许我不知道该搜索什么 这是您在访问网站时得到的信息: 非常感谢您的帮助:-)解决方案是在站点上使用公共RESTAPI 如果网站没有提供RESTAPI来与之交互,那么您不应该感到惊讶,因为您很难尝试模拟人类。Web抓取通常仅适用于不需要身份验证的页面,或使用标准HTTP 401状态响应通知客户端它应提示用户使用正确的凭据进行响应的页面。如果站点使用

我想从一个有初始登录(我有工作凭证)的网站上抓取数据。这是不可能检查的代码,在这是一个登录,在访问网站前弹出。我试着四处搜索,但没有找到任何答案——也许我不知道该搜索什么

这是您在访问网站时得到的信息:


非常感谢您的帮助:-)

解决方案是在站点上使用公共RESTAPI


如果网站没有提供RESTAPI来与之交互,那么您不应该感到惊讶,因为您很难尝试模拟人类。Web抓取通常仅适用于不需要身份验证的页面,或使用标准HTTP 401状态响应通知客户端它应提示用户使用正确的凭据进行响应的页面。如果站点使用的是不同的机制,很可能是基于AJAX的,那么解决方案将针对该web站点或使用相同机制的其他站点。这意味着没有人可以回答您的问题,因为您没有告诉我们您正在与哪个网站进行交互。

根据您的屏幕截图,这看起来只是在使用基本身份验证

使用库“请求”:

session=requests.session()
r=session.get(url,auth=requests.auth.HTTPDigestAuth('user','pass'))


你应该能到那里。

我找不到汤姆的工作答案,但我找到了一份工作:

from selenium import webdriver
driver = webdriver.Chrome('path to chromedriver')
driver.get('https://user:password@webaddress.com/')

这很有效:)

在提供答案之前,了解您正在使用的屏幕抓取库会很有帮助。并且可以在chrome中打开“网络”选项卡,填写您的凭据,并查看该网站在您访问时发布的帖子。复制所有参数并使用请求将其作为有效负载发送。通常没什么大不了的。@jlaur这不是一个通用的解决方案。它假定站点在您进行身份验证后设置的cookie永远有效。如果创建网站的人不知道自己在做什么,或者不真正关心安全性,这可能会起作用。否则它就不是一种可行的方法,而这正是requests.Session()进入的地方。我只是想给这家伙指出一个正确的方向,或者硒元素。
from selenium import webdriver
driver = webdriver.Chrome('path to chromedriver')
driver.get('https://user:password@webaddress.com/')