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()里面地对象再进行解析。代码如下:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐