Closed liujuanjuan1984 closed 4 years ago
在写我的爬虫脚本 csdn_my_article 时,遇到一处报错:
csdn_my_article
pandas.io.sql.DatabaseError: Execution failed on sql 'select * from csdn_my_article;': (1146, "Table 'zhihuclawer.csdn_my_article' doesn't exist")
相关的代码是:
pd.io.sql.to_sql(article_df, "csdn_my_article", conn, if_exists='append', index=False)
因为该爬虫脚本是首次运行,mysql 中并没有该table,在执行上述语句时,将会自动创建新表格。但显然,创建新表格遇到问题,导致创建表格失败。
mysql
table
经检查,失败的原因是:
attn = r'some_(.*?)attn_(.*?)desct_(.*?)' result = re.findall(attn,html_text,re.S) if result: article_df = pd.DataFrame(result,columns=['some_columns','title_list'])
我在执行该脚本之前,曾修改正则匹配式 attn里的描述,导致多抓取一个变量,但在定义 article_df 这个 pandas dataframe数据时,忘记定义该参数的 columns 名称。从而导致正则匹配拿到的每项结果的参数个数,比 dataframe 所定义的 columns 个数要多。最终导致接下来to_sql() 执行失败。
attn
article_df
pandas dataframe
columns
dataframe
to_sql()
在 columns 的 list 中增加对应的 columns ,果然能正常执行。
list
在写我的爬虫脚本
csdn_my_article
时,遇到一处报错:相关的代码是:
因为该爬虫脚本是首次运行,
mysql
中并没有该table
,在执行上述语句时,将会自动创建新表格。但显然,创建新表格遇到问题,导致创建表格失败。经检查,失败的原因是:
我在执行该脚本之前,曾修改正则匹配式
attn
里的描述,导致多抓取一个变量,但在定义article_df
这个pandas dataframe
数据时,忘记定义该参数的columns
名称。从而导致正则匹配拿到的每项结果的参数个数,比dataframe
所定义的columns
个数要多。最终导致接下来to_sql()
执行失败。在
columns
的list
中增加对应的columns
,果然能正常执行。