Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用请求对链接进行身份验证_Python_Beautifulsoup - Fatal编程技术网

Python 如何使用请求对链接进行身份验证

Python 如何使用请求对链接进行身份验证,python,beautifulsoup,Python,Beautifulsoup,我正在尝试使用Beauty soup从链接中提取数据…目前其身份验证失败,如下所示..如何验证链接,我知道应该登录的服务器..在哪里提供服务器路径以及如何验证链接 from bs4 import BeautifulSoup as bs import argparse import urllib import urllib2 import getpass import re import requests def update (url): print url r = reque

我正在尝试使用Beauty soup从链接中提取数据…目前其身份验证失败,如下所示..如何验证链接,我知道应该登录的服务器..在哪里提供服务器路径以及如何验证链接

from bs4 import BeautifulSoup as bs
import argparse
import urllib
import urllib2
import getpass
import re
import requests

def update (url):
    print url
    r = requests.get(url)
    html = r.text
    soup = bs(html)
def main ():
    #For logging
    print "test"
    parser = argparse.ArgumentParser(description='This is the update.py script created by test')
    parser.add_argument('-u','--url',action='store',dest='url',default=None,help='<Required> url link',required=True)
    results = parser.parse_args()# collect cmd line args
    url = results.url
    #print url
    update(url)
if __name__ == '__main__':
    main()
从bs4导入美化组作为bs
导入argparse
导入URL库
导入urllib2
导入getpass
进口稀土
导入请求
def更新(url):
打印url
r=请求。获取(url)
html=r.text
soup=bs(html)
defmain():
#用于记录
打印“测试”
parser=argparse.ArgumentParser(description='这是由test'创建的update.py脚本)
parser.add_参数('-u','-url',action='store',dest='url',default=None,help='url link',required=True)
结果=parser.parse_args()#collect cmd line args
url=results.url
#打印url
更新(url)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
错误:-

Traceback (most recent call last):
  File "announce_update2.py", line 24, in <module>
    main()
  File "announce_update2.py", line 22, in main
    update(url)
  File "announce_update2.py", line 11, in update
    r = requests.get(url)
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\api.py", line 55, in get
    return request('get', url, **kwargs)
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\sessions.py", line 289, in request
    history = [r for r in gen] if allow_redirects else []
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\sessions.py", line 133, in resolve_redirects
    proxies=proxies
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\sessions.py", line 279, in request
    resp = self.send(prep, stream=stream, timeout=timeout, verify=verify, cert=cert, proxies=proxies)
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\sessions.py", line 374, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests-1.1.0-py2.7.egg\requests\adapters.py", line 213, in send
    raise SSLError(e)
requests.exceptions.SSLError: [Errno 1] _ssl.c:504: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
回溯(最近一次呼叫最后一次):
文件“announce_update2.py”,第24行,在
main()
文件“announce_update2.py”,第22行,主目录
更新(url)
文件“annound_update2.py”,第11行,在更新中
r=请求。获取(url)
get中第55行的文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\api.py”
返回请求('get',url,**kwargs)
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\api.py”,请求中的第44行
return session.request(method=method,url=url,**kwargs)
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\sessions.py”,请求中第289行
历史记录=[r代表gen中的r]如果允许_重定向到else[]
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\sessions.py”,第133行,在resolve\u重定向中
代理=代理
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\sessions.py”,请求中第279行
resp=self.send(prep,stream=stream,timeout=timeout,verify=verify,cert=cert,proxies=proxies)
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\sessions.py”,第374行,在send中
r=适配器.send(请求,**kwargs)
文件“C:\Python27\lib\site packages\requests-1.1.0-py2.7.egg\requests\adapters.py”,第213行,在send中
升起SSLError(e)
requests.exceptions.SSLError:[Errno 1]\u ssl.c:504:错误:14090086:ssl例程:SSL3\u GET\u SERVER\u证书:证书验证失败

url是内部的还是公共的?如果它是公共的,你能分享它吗?如果它是内部的,证书是由内部CA签署的,它不在CA的请求内置列表中吗?@t-8ch-它是一个内部链接…它需要在服务器登录名上进行身份验证。company.com…怎么做?如果它需要进行身份验证,你需要一个签名的证书,要么自己信任它,要么从默认情况下已经信任的公司购买。如果没有,就不要验证它…您的内部CAs证书应该与您的内部浏览器捆绑在一起。您可以从此浏览器证书管理器提取证书。大多数浏览器允许您单击URL栏旁边的“锁定”符号,以显示当前页面的信任链。此窗口中的某个位置应该有一个按钮,用于将证书导出到文件(导出CAs证书,而不是服务器,使用bas64编码)。然后使用
verify
参数将导出证书的文件名传递给请求。@如果传递给
requests,则为user2125827。get()
将跳过验证。但你真的不应该这么做。内部证书绝对没有问题,人们使用它们是有原因的。