迭代直通名单LXML表单提交

时间:2012-07-30 01:24:26

标签: python-3.x web-scraping lxml

我对Python很陌生,对lxml来说更新,但我想做的事情似乎很简单,但我无法弄清楚我做错了什么。

我有这个代码的目的是将一个值列表(列表对象ISBN)提供给lxml以提交到搜索字段:

for i in ISBN:

    page.forms[0].fields['_nkw'] = ISBN[i]
    blah blah blah

运行后出现此错误:

Traceback (most recent call last):

page.forms[0].fields['_nkw'] = ISBN[i]
TypeError: list indices must be integers, not str 

显然必须有一种方法可以迭代一个值列表来提供给表单,但显然我不知道它:)

编辑:仅当用硬输入替换ISBN [i]时,代码工作正常。 编辑2:请求的ISBN列表对象的内容:

['9781608319053', '9780321558237', '9781932735413', '9781416059516', '9781437708257', '9780781780582', '9781437701517', '9780323065801', '9780890420256', '9780323079334', '9781599417042', '9780781771535', '9781416031215', '9780312601430', '9780781775250', '9781591263333', '9780071748896', '9780133669510', '9781416045748', '9780781771566', '9781437728019', '9780323065849', '9781416066675', '9780735579965', '9780323078917', '9781437735826', '9781603595681', '9780321696724', '9780321558145', '9781933107981', '9780138024611']

1 个答案:

答案 0 :(得分:1)

麻烦在于你的循环并使用ISBN变量。在分配期间,您不需要对其进行索引,因为i已经包含列表的元素,作为循环的一部分提取。您收到异常是因为您无法使用字符串索引列表,即使该字符串来自列表本身。

相反,请使用page.forms[0].fields['_nkw'] = i

或者,如果您需要将ISBN编入索引以供以后未显示的代码使用,请保持分配不变,并将循环声明更改为:

for i in range(len(ISBN)):