【问题标题】:Problem with can only concatenate str (not "NoneType") to str只能将 str (不是“NoneType”)连接到 str 的问题
【发布时间】:2021-01-26 00:10:16
【问题描述】:

当我想发送带有跨度文本的不和谐消息时,我得到了这个 '''只能将str(不是“NoneType”)连接到str''' 打印有效,但发送不和谐 webhook。

所以这是我的问题,如何解决这个问题。

我的代码:

from discord_webhook import DiscordWebhook, DiscordEmbed
import bs4
import lxml
import requests
from bs4 import BeautifulSoup

webhook=DiscordWebhook(url="X")
link='https://.com'

def sizes():
   r=requests.get(link)
   soup=bs4.BeautifulSoup(r.text,"lxml")
   Size=soup.find_all('span', {'class': 'js-tooltipContent g-dn'})
   for span in Size:
       print(span.text.replace('EU:','').strip())

embed = DiscordEmbed(
    title= "size", 
    description= "sizes: " + sizes(),
    color=242424,
    )
    
webhook.add_embed(embed)
response = webhook.execute()

【问题讨论】:

  • 是的,我想退货
  • 您是否尝试过将其显式转换为字符串?

标签: python python-3.x python-requests discord webhooks


【解决方案1】:

问题是,sizes 没有返回任何内容。 print 不返回值,它只是打印。您需要执行以下操作:

acc = ""
for span in Size:
   acc += span.text.replace('EU:','').strip()  # Concatenate the strings together
return acc

还有更有效的方法可以使用列表理解/生成器表达式和join

return "".join(span.text.replace('EU:','').strip() for span in Size)

但这变得有点复杂了。

【讨论】:

  • 它不能完美运行,因为只有第一行文本不是全部返回。
  • 有 size: S,M,L,XL,XXL ,但脚本只返回 S
  • @DemonsAreHere4000 这会将所有spans 连接在一起。如果您没有获得其余尺寸,则表明 Size 缺少数据。在循环之前做print(Size)来验证数据。
  • print(Size) 正在打印所有尺寸
  • soup.find_all('span', {'class': 'js-tooltipContent g-dn'}) Out[144]: [<span class="js-tooltipContent g-dn"> EU: S </span>, <span class="js-tooltipContent g-dn"> EU: M </span>, <span class="js-tooltipContent g-dn"> EU: L </span>, <span class="js-tooltipContent g-dn"> EU: XL </span>, <span class="js-tooltipContent g-dn"> EU: XXL </span>]
猜你喜欢
  • 2021-12-28
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2021-11-07
  • 2020-09-18
相关资源
最近更新 更多