TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误

Posted

技术标签:

【中文标题】TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误【英文标题】:TypeError: can only concatenate str (not "list") to str error while webscraping with Python 【发布时间】:2022-01-20 13:30:26 【问题描述】:

我已经阅读了很多关于此类错误的内容。但是,我仍然不知道如何解决它。我正在使用 Python 抓取一个网站,并尝试通过 href 链接访问另一个网站。

years_code=['114','115','116']
base_url = 'https://www.congress.gov/search?q=%7B%22source%22%3A%22legislation%22%2C%22congress%22%3A'
base_url_link = 'https://www.congress.gov'
links_array = []
for year in years_code:
  
  main_url = base_url + year + '%7D'
  html_page = requests.get(main_url)
  soup = BeautifulSoup(html_page.text, 'html.parser')
  allData = soup.findAll('li','class':'expanded')

  # getting the links for cosponsor
  cosponsors_link=[x.find('strong', string='Cosponsors:').findNext('a',href=True).get('href') for x in allData]
  links_array.append(cosponsors_link)
  for link in links_array:

    main_url_link = base_url_link + link
    html_page_link = requests.get(main_url_link)
    soup_link = BeautifulSoup(html_page_link, 'html.parser')
    allData_link = soup_link.findAll('li','class':'facetbox-shownrow')
  
    district = [list(x.stripped_strings)[0] for x in soup_link.select('li.facetbox-shownrow a')]
    district_array.append(district)


district_array
end 

但是,当我运行此代码时,我收到错误 "TypeError: can only concatenate str (not "list") to str" 在最后一个 for 循环之前,当我显示 "links_array" ,我得到了输出,但是在 for 循环中出了点问题。

【问题讨论】:

'link` 是一个列表,而不是一个字符串。 【参考方案1】:

cosponsors_link 和 links_array 都是字符串列表,所以你需要通过 cosponsors_link 扩展 links_array。所以替换这个

links_array.append(cosponsors_link)

通过

links_array.extend(cosponsors_link)

最后,您的代码似乎在全球范围内效率不高

【讨论】:

以上是关于TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:“图像”对象不能使用 PIL 进行下标

TensorFlow:TypeError:不允许使用 `tf.Tensor` 作为 Python `bool`

构建神经网络 [TensorFlow 2.0] 模型子类化 - ValueError/TypeError

可能的未处理承诺拒绝(id:1):TypeError:网络请求失败

Python 酸洗错误:TypeError:对象泡菜未返回列表。 numpy的问题?

如何修复“TypeError:添加的图层必须是类图层的实例。”在 Python 中