使用BeautifulSoup,需要进行身份验证

时间:2017-10-28 07:13:07

标签: python web-scraping beautifulsoup lan intranet

我正在使用BeautifulSoup4和公司项目的Python请求来抓取局域网数据。由于该站点具有登录界面,因此我无权访问该数据。登录界面是一个弹出窗口,不允许我访问页面源或检查页面元素而无需登录。我得到的错误是这个 -

访问错误:未经授权 访问此文档需要用户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尝试访问数据时遇到的错误。

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用机械装置?

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问题并且你有权绕过这个问题,那么请看看这个答案,了解这方面的技巧 https://stackoverflow.com/questions/13303449/urllib2-httperror-http-error-403-forbidden

答案 1 :(得分:0)

如果您在Python 3.x上使用BeautifulSoup和请求,则只需使用以下命令即可:

from bs4 import BeautifulSoup
import requests

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