python-3.x 为什么保存变量中包含html的文本会导致beautifulsoup4出现意外行为?

zzzyeukh  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(139)

我正在使用beautifulsoup在一个购物平台上自动发布产品,不幸的是他们的API目前被禁用,所以现在唯一的选择是使用beautifulsoup。

    • 计划预期如何运作?**

程序预计将读取. csv文件(我提供文件名)并将产品数据存储在变量中-之后,它将经历多个步骤(填写表单)-如输入从变量中获得的名称,例如:

ime_artikla = driver.find_element(By.ID, 'kategorija_sug').send_keys(csvName) #Here it inputs the name

其中,csvName是传递给函数的值以及一些其他参数:

def postAutomation(csvName, csvPrice, csvproductDescription):

我正在读取文件的方式如下:

filename = open(naziv_fajla, 'r', encoding="utf-8") #File name to open + utf-8 encoding was necess.
file = csv.DictReader(filename)

以上代码行位于try:语句中。
我从csv文件中读取列的方式如下:

for col in file:
            print("Reading column with following SKU: " + color.GREEN + color.BOLD + (col['SKU']) + color.END + "\n")
            csvSKU = (col['SKU'])
            csvName = (col['Name'])
            #csvCategory = (col['Categories'])
            csvPrice = (col['Price'])
            csvproductDescription = (col['Description'])
            print(csvName)
            #print(csvCategory)
            print(csvPrice)
            print(csvproductDescription)
            postAutomation(csvName, csvPrice, csvproductDescription)
            i+=1
            counterOfProducts = counterOfProducts + 1
    • 在产品说明出现HTML和/或内联css之前,这一切都按预期运行(产品已成功发布到在线商店)**
    • 问题:**

正如我所说的,当我有包含html的列时,问题就发生了。
当我填充产品描述字段(工具〉源代码)时,该站点使用 * tinymce * 编辑文本并放置描述等...
实际上,有两种情况正在发生,程序的行为与预期不符:
1.案例:
在第一种情况下,产品成功发布,但是由于某种原因,<li>\n未被视为HTML,下面是一个产品描述的示例(出现此问题的地方):

<p style="text-align: center;">Some product description.\n<ul>\n <li>Product feature 1</li>\n         <li>Prod Feature 2</li>\n<li>Prod Feature 3</li>\n<li>Prod Feature 3</li>\n<li>Prod feature 4</li>\n</ul>

当我提交此代码时,我会得到什么:

  • \n\n产品功能1\n产品功能2\n产品功能3\n产品功能3\n产品功能4\n *

1.案例:
在第二种情况下会发生什么,是程序崩溃。会发生什么如下:
不知何故,从csv文件中提取的产品描述混淆了(我认为是由于复杂的html)程序-产品描述的一部分进入了价格&nbsp...字段,〈---这完全在下一页(你必须点击下一页到产品描述所在页面的末尾),然后输入价格,这对我来说很奇怪。
werid的特点是我有产品描述的模板(HTML和CSS),我将其保存到字符串文字中,作为template1 = """" A LOT OF HTML AND INLINE CSS """end_of_template = """ A LOT OF HTML AND INLINE CSS """,这样做后,它会得到完美的渲染:

final_description = template1 + csvproductDescription + end_of_template

但是csvproductDescription变量内部的html和内联css不会被视为HTML和CSS。
我该如何解决这个问题?

olqngx59

olqngx591#

看起来问题是我在产品说明中有空格,所以我这样解决了它:

final_description = html_and_css
final_description = final_description + csvproductDescription
final_description = final_description + html_and_css2
final_description = " ".join(re.split("\s+", final_description, flags=re.UNICODE))

相关问题