in今天爬网站的时候,图方便加上想的太快(脑子不清醒。。。)写了句urls_queue.put_nowait(soup.find_all('a', class_ = 'company-name')['href'] + 'jobs/')。想一步到位直接提取所有信息。结果就被报了TypeError: list indices must be integers or slices, not str的错误信息。:
这句报错的翻译大概是列表的索引必须是整数或者切块,而不能是字符串。(indices是index的复数形式之一,一开始直接百度翻译给我译成了指数让我一脸懵逼,后来再去查了才知道是index索引的复数形式之一)。看了一下报错语句中运用到索引的地方,就只有soup.find_all('a', class_ = 'company-name')['href']这个地方,按照报错的信息,soup.find_all('a', class_ = 'company-name')的类型是个列表而不是我所想要的bs4.element.Tag类型。仔细想了想,确实,soup.find_all()返回的应该是一个以 bs4.element.Tag对象为元素的列表,而列表的索引页自然只能是整数或者切片。这个错误纯属是我自己粗心大意导致的哈哈哈。解决方案就是迭代地取find_all()里面地对象再进行解析。代码如下: