在需要身份验证的地方使用 BeautifulSoup

Using BeautifulSoup where authentication is required

我正在使用公司项目的 BeautifulSoup4 和 Python 请求来抓取 LAN 数据。由于网站有登录界面,我无权访问数据。登录界面是一个弹出窗口,不允许我在不登录的情况下访问页面源代码或检查页面元素。我得到的错误是这个-

访问错误:未经授权 访问此文档需要用户 ID

This is a screen-shot of the pop-up box(涂黑部分为敏感信息)。它根本没有关于 html 标签的信息,因此我无法通过 python.

自动登录

我已经尝试过 requests_ntlm、selenium、python 请求甚至 ParseHub,但都没有用。我已经在这个阶段停留了一个月了!请,任何帮助将不胜感激。

下面是我的初始代码:

import requests
from requests_ntlm import HttpNtlmAuth
from bs4 import BeautifulSoup
r = requests.get("www.amazon.in")
from urllib.request import Request, urlopen
req = Request('http://www.cmegroup.com/trading/products/#sortField=oi&sortAsc=false&venues=3&page=1&cleared=1&group=1', headers={'User-Agent': 'Mozilla/5.0'})
webpage = urlopen(req).read()
print r.content
r = requests.get("www.amazon.in",auth=HttpNtlmAuth('user_name','passwd'))
print r.content*

s_data = BeautifulSoup(r.content,"lxml")*
print s_data.content

错误: 文件错误:未经授权

访问错误:未经授权

访问此文档需要用户 ID

这是我在 手动登录 站点后 BeautifulSoup 尝试访问数据时遇到的错误。

你考虑过使用机械吗?

import mechanize
from bs4 import BeautifulSoup
import urllib2 
import cookielib

cook = cookielib.CookieJar()
req = mechanize.Browser()
req.set_cookiejar(cook)


req.open("http://www.cmegroup.com/trading/products/#sortField=oi&sortAsc=false&venues=3&page=1&cleared=1&group=1")

req.select_form(nr=0)
req.form['username'] = 'username'
req.form['password'] = 'password.'
req.submit()

print req.response().read()

编辑

如果您遇到 robots.txt 问题并且您有权规避此问题,请查看此答案以了解执行此操作的技术

如果您正在使用 BeautifulSoup 并在 Python 3.x 上请求,只需使用:

from bs4 import BeautifulSoup
import requests

r = requests.get('URL', auth=('USER_NAME', 'PASSWORD'))
soup = BeautifulSoup(r.content)