使用 Mechanize (PubChem) 提交表格

Submitting a Form using Mechanize (PubChem)

我正在尝试为 PubChem 编写化学 属性 刮板。我对机械化很陌生,只是一般的编程,所以我被困在如何为这个网站提交表格:https://pubchem.ncbi.nlm.nih.gov/

br.submit() 产生错误(它只是说 httperror_seek_wrapper),我不确定如何从那里继续。我尝试使用以下内容定位实际提交的按钮:

 def pubchem():
    br = Browser()
    br.open("https://pubchem.ncbi.nlm.nih.gov/")
    br.select_form(nr=0)
    form = br.form
    form['term'] = "74-82-8"
    form.click(id='go')

但这似乎也不起作用。我希望获得有关在哪里寻找答案或提交此表单的替代方法的帮助。

如有任何帮助,我将不胜感激。

您可以使用 PubChem 的服务获取数据 PUG REST

一个简单的例子:

import urllib2
import json

def get(url):
    req = urllib2.Request(url)
    response=urllib2.urlopen(req)
    return response.read()

pugrest = 'http://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/'
cmpd = 'methane'
prop ='/property/MolecularFormula,MolecularWeight,CanonicalSMILES,InChI,IUPACNam/JSON'

data = get(pugrest+cmpd+prop)
print data

这会给你这个 json:

{ "PropertyTable": { "Properties": [ { "CID": 297, "MolecularFormula": "CH4", "MolecularWeight": 16.04246, "CanonicalSMILES": "C", "InChI": "InChI=1S/CH4/h1H4", "IUPACName": "methane" } ] } }