【问题标题】:Mechanize: Type error : Nonetype object does not support item assignment机械化:类型错误:Nonetype 对象不支持项目分配
【发布时间】:2015-04-09 03:39:13
【问题描述】:

我正在尝试使用 Mechanize 获取一些数据,但出现错误“Nonetype 对象不支持项目分配”。我复制下面使用的代码。

import mechanize

url = "http://www.tropicos.org"

br = mechanize.Browser()

br.form["ct100_MainContentPlaceHolder_acNameControl_textBox"] = "poa    annua"
response = br.submit()
print response.read()

【问题讨论】:

    标签: python mechanize


    【解决方案1】:

    您的问题是您在访问表单之前没有在br 上调用open。因此,请尝试以下操作:

    import mechanize
    
    url = "http://www.tropicos.org"
    
    br = mechanize.Browser()
    br.open(url) #RIGHT HERE
    br.form["ct100_MainContentPlaceHolder_acNameControl_textBox"] = "poa    annua"
    response = br.submit()
    print response.read()
    

    它应该可以工作。

    【讨论】:

    • 我尝试了您的建议,但仍然给我同样的错误。我不确定错误是否来自使用错误的搜索表单。 Python 指向那行代码。还有其他提示吗?谢谢。
    【解决方案2】:

    尝试添加用户代理和数字形式。

    您的代码将如下所示:

    import mechanize
    
    useragents = [('User-agent',
               'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)')]
    
    url = "http://www.tropicos.org"
    br = mechanize.Browser()
    br.addheaders = [('User-agent', random.choice(useragents))]
    site = br.open(url)
    br.select_form(nr=0)   
    br.form["ct100_MainContentPlaceHolder_acNameControl_textBox"] = "poa    annua"
    response = br.submit()
    print response.read()
    

    通常 select_form 设置为 0 在某些情况下它是隐藏的

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 2016-10-12
      相关资源
      最近更新 更多