psycopg2.ProgrammingError:无法适应类型“标签”

时间:2018-08-26 05:58:26

标签: python postgresql

回溯(最近通话最近): https://retailer.partykungen.se/sjalvlysande-armband.html   文件“ C:/Users/xyz/PycharmProjects/crawler/back-end.py”,第121行,在     cur.execute('''''插入爬行器(URL,标题,变体,类别,注释,价格,描述,标签,图像,文章,股票,is_retailer)值(%s,%s,%s,%s,% s,%s,%s,%s,%s,%s,%s,%s)''',(链接,标题,名称1,猫,评论,价格,说明,标签,图像,艺术品,库存, is_retailer)) psycopg2.ProgrammingError:无法适应“标记”类型

2 个答案:

答案 0 :(得分:1)

像上面一样,我会检查您的数据。因此,如果您尝试将熊猫数据框导入Postgres表,我将执行以下操作:

确保已完全剥离所有标签。因此,首先通过检查您的数据框来彻底检查该标签,因为标签无法正确识别对象,因此标签抛出了psycopg2驱动程序。因此,请确保首先从HTML中提取所需的所有信息。使用getText()获得更多的“顽固”标签。

    list_titles = []
    movie_titles = all_movies[n].find_all("h1",{"class":"blah"})
    for k in movie_titles:
        title = k.getText()
        list_titles.append(title)

答案 1 :(得分:0)

这可能是您在PostgreSQL表中定义数据类型的方式与解析器对象返回类型之间的TypeError冲突。

例如,使用BeautifulSoup4(bs4)来抓取您的文件,树中元素的返回类型为 type:Tag (参见{{ 3}})。

我的建议:

1)将所有Postgre Table类型定义为文本(以测试调试期间是否成功插入)

2)将所有变量转换为字符串:例如

... (str(link), str(titl), str(name1), ...) 

3)这样可以使您成功插入,然后可以向后走,确保每个元素都与表中所需的类型匹配。