错误登录脚本对象有没有属性“__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='
你好,我测试,它不工作,我想知道我犯了一个错误 – parcal 2015-04-02 04:08:10
不清楚 - 似乎为我工作 – jwilner 2015-04-02 04:31:40
它适用于本地的HTML我太......,如此怪异 – parcal 2015-04-02 04:53:22