在寫我的爬蟲腳本 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
,在執行上述語句時,將會自動創建新表格。但顯然,創建新表格遇到問題,導致創建表格失敗。
經檢查,失敗的原因是:
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()
執行失敗。
在 columns
的 list
中增加對應的 columns
,果然能正常執行。