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 错误的主要内容,如果未能解决你的问题,请参考以下文章
TensorFlow:TypeError:不允许使用 `tf.Tensor` 作为 Python `bool`
构建神经网络 [TensorFlow 2.0] 模型子类化 - ValueError/TypeError
可能的未处理承诺拒绝(id:1):TypeError:网络请求失败