错误登录脚本对象有没有属性“__getitem__”

问题描述:

你好,我创建一个登录脚本,我有一个错误错误登录脚本对象有没有属性“__getitem__”

我的代码

# -*- coding: UTF-8 -*- 
    from bs4 import BeautifulSoup 
    import requests 
    import sys 
    import os 

    #givenURL = sys.argv[1] 


    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} 

    # initialize session 
    session = requests.Session() 
    response = session.get("http://website.fr/", headers=headers) 
    soup = BeautifulSoup(response.content) 
    token = soup.find('a', {'name':'return'})['value'] 
    token2 = soup.find('a', {'type':'hidden'})['name'] 
    print token token2 

误差

File "logins", line 17, in <module> 
    token = soup.find('a', {'name':'return'})['value'] 
TypeError: 'NoneType' object has no attribute '__getitem__' 

信息令牌登录

<input type="hidden" name="return" value="sommetoken=" /> 
    <input type="hidden" name="sommetoken" value="1" /></form> 

bs4.BeautifulSoup.find返回None当它没有找到它正在寻找:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#find

soup.find('a', {'name': 'return'})将与return一个name属性的a标签相匹配。

要匹配并解压缩上述HTML,您可以使用soup.find('input', {'name': 'return'})['value']

In [26]: html = """ 
....: <input type="hidden" name="return" value="sommetoken=" /> 
....:  <input type="hidden" name="sommetoken" value="1" />""" 
In [27]: soup = bs4.BeautifulSoup(html) 
In [29]: soup.find("input", {"name": "return"}) 
Out[29]: <input name="return" type="hidden" value="sommetoken="/> 
In [30]: soup.find("input", {"name": "return"})["value"] 
Out[30]: u'sommetoken=' 
+0

你好,我测试,它不工作,我想知道我犯了一个错误 – parcal 2015-04-02 04:08:10

+0

不清楚 - 似乎为我工作 – jwilner 2015-04-02 04:31:40

+0

它适用于本地的HTML我太......,如此怪异 – parcal 2015-04-02 04:53:22