【发布时间】:2011-03-21 21:26:40
【问题描述】:
我正在尝试自动从网络表单下载一些数据。我正在使用 python 的 mechanize 模块。
网址在这里:http://www.hiv.lanl.gov/components/sequence/HIV/search/search.html 我需要填写序列长度、亚型和基因组区域。我已经弄清楚了序列长度和基因组区域,但我在选择子类型时遇到了麻烦。当我加载表单时得到一个空的 SelectControl 并且机械化不会让我选择任何东西。
此代码应加载网站:
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.open('http://www.hiv.lanl.gov/content/sequence/HIV/mainpage.html')
br.follow_link(text = 'Search Interface')
br.select_form(nr = 1)
任何帮助将不胜感激。
-会
编辑: 我尝试使用 BeautifulSoup 重新解析 HTML(根据 SO question),但没有运气。
新编辑:
以下是mechanize 表单的摘录。
<search POST http://www.hiv.lanl.gov/components/sequence/HIV/search/search.comp multipart/form-data
<TextControl(value SequenceAccessions SA_GenBankAccession 1=)>
<SelectControl(master=[Any, *HIV-1, HIV-2, SIV, SHIV, syntheticwholeDNA, NULL])>
<TextControl(value SEQ_SAMple SSAM_common_name 1=)>
<SelectControl(slave=[])>
<TextControl(value SequenceEntry SE_sequenceLength 4=)>
<CheckboxControl(sample_year_exact=[*1])>
<TextControl(value SEQ_SAMple SSAM_Sample_year 11=)>
<TextControl(value SEQ_SAMple SSAM_Sample_country 1=)>
<CheckboxControl(recombinants=[Recombinants])>
由于某种原因,slave 控件未填充可能的选项。
【问题讨论】:
-
问题是子类型编码为
slaveSelectControl...在这个例子中,我需要它是'B*'、'Any'和'C* '
标签: python html-parsing mechanize