列表索引必须是整数,而不是元组

时间:2015-05-01 11:43:21

标签: python html integer web-scraping

我搜索了这个问题并尝试使用上面的解决方案,但它们似乎都没有用。

我目前的代码是:

 for item in g_data:
     print item.contents[1].find_all("a", {"class": "a-link-normal"})[[1], [2], [3]]['href'] 

这会产生TypeError: indices must be integers, not tuple

我该如何解决这个问题呢?我知道这是一个简单的问题,但我尝试的解决方案会导致它出现并说“不是列表”,“不是str'或者'不是元组'。

2 个答案:

答案 0 :(得分:0)

所以我通过规避选择问题彻底解决了手头的问题。

继承人的所作所为:

  

表示g_data中的项目:       print item.contents [1] .find_all(" a",{" class":" a-link-normal s-access-detail-page a-text-normal& #34;})[0] [" HREF"]

这样做首先搜索页面上的主要内容(任何网址都可以在G_data中)。接下来它将选择[1]这是焦点内容,产品,图像,链接等。它摆脱了所有其他的东西。然后是括号内的部分,它的作用是选择这段内容

  

Gorilla Tape 11m

现在它没有选择那个,它选择了页面上的所有产品。之后有[0]这是第一个产品的选择,所以如果页面上有15个产品,则为0。

然后你有[" href"]这样做只需要该关键字中的数据,在这种情况下是相关产品页面的网址。

通过在此方法中执行此操作,您可以选择代码并粘贴,并使其如下所示:

  

print item.contents [1] .find_all(" a",{" class":" a-link-normal s-access-detail-page a-文本的正常"})[0] [" HREF"]       print item.contents [1] .find_all(" a",{" class":" a-link-normal s-access-detail-page a-text-normal& #34;})[1] [" HREF"]       print item.contents [1] .find_all(" a",{" class":" a-link-normal s-access-detail-page a-text-normal& #34;})[2] [" HREF"]

或者您可以找到一种方法,在一行代码中列出X-Y中的所有产品,这不应该是困难的。

答案 1 :(得分:-1)

如果有效

ArrayList<String> animals = new ArrayList<String>(); animals.add("Asian");

这是正确的,您只需指定一个整数作为索引。我想你想这样做。

print item.contents[1].find_all("a", {"class": "a-link-normal"})[1]['href']