Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python解析html数据并存储到数据库中_Python_Html_Postgresql_Insert_Beautifulsoup - Fatal编程技术网

Python解析html数据并存储到数据库中

Python解析html数据并存储到数据库中,python,html,postgresql,insert,beautifulsoup,Python,Html,Postgresql,Insert,Beautifulsoup,a 这困扰了我两天,我是python新手,我想通过以下链接解析html数据: 然后将数据存储到名为movie_db的postgresql数据库中,有一个名为films的表,该表由以下命令创建: CREATE TABLE films ( title varchar(128) NOT NULL, description varchar(256) NOT NULL, directors varchar(128)[], roles varchar(128)[] ); 我已经

a 这困扰了我两天,我是python新手,我想通过以下链接解析html数据:

然后将数据存储到名为movie_db的postgresql数据库中,有一个名为films的表,该表由以下命令创建:

CREATE TABLE films (
title       varchar(128) NOT NULL,
description varchar(256) NOT NULL,
directors   varchar(128)[],
roles       varchar(128)[]
);
我已经解析了数据,有三个列表数据用于标题、描述、导演、角色。例如标题=['a',…,'b'],描述=['c',…,'f'],导演=['d',…,'g'],角色=['f','g','t'],…,['h','t','u']]

sql=“插入电影(标题、描述、导演、角色)

(%s,%s,%s,%s);” 对于拉链中的obj(t、des、污垢、r): cur.execute(cur.mogrify(sql,obj)) 康涅狄格州提交

有一个错误:

 psycopg2.DataError: malformed array literal: "サム・メンデス"

LINE 1: ...ームズ・ボンドの戦いを描く『007』シリーズ第24作', 'サム・メ...
                                                         ^
DETAIL:  Array value must start with "{" or dimension information.     

我知道这个错误。这意味着您正试图将字符串值插入到数组列中。您可以按如下方式验证SQL

sql2 = cur.mogrify(SQL, obj)
print sql2
从html获取的控制器和角色是字符串列表。因此,在zip函数之后,obj包含dir和角色作为字符串

对于您的情况,您尝试只插入一行。所以可能没有必要拉拉链

我不熟悉您使用的这个API,但是您能在插入之前尝试打印从html接收到的值吗?我可以为您提供所需的确切SQL

编辑关于新数组的语法

directors数组是一种简写语法,用于创建一个新数组,其中每个元素都作为数组。在更可读的语法中,它将与下面相同

director = ['tom', 'jack', 'john']
directors = []

for d in director:
    elem_as_list = []
    elem_as_list.append(d)
    directors.append(elem_as_list)
print director
print directors
print type(director[0])
print type(directors[0])
这是输出

['tom', 'jack', 'john']
[['tom'], ['jack'], ['john']]
<type 'str'>
<type 'list'>                                                           
['tom'、'jack'、'john']
汤姆、杰克、约翰

您好,如果您想了解更多信息,请告诉我!可能重复的Thanks@Gouri,我已经解决了这个问题。因为我忘了在泥土中为d口述=[[d,]]。谢谢你的建议,你是个好人。@KeTian,我很高兴能帮助你。