import urllib.request
import re
import psycopg2 as psy
conn=psy.connect(database='test1',user='postgres',password='091297',host='127.0.0.1',port='5432')
cur=conn.cursor()
try:
cur.execute('create table 糗事百科(num int,str text);')
except:
pass
conn.commit()
def get_html(url):
req = urllib.request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0')
response=urllib.request.urlopen(req)
html=response.read().decode('utf-8')
return html
def get_list(html):
list1=re.findall(r'\<div class="content"\>\n{4}.+?\n{3}\</div\>',html)
for each in list1:
str1=re.search(r'\<span\>.+\</span\>',each).group()[6:-7]
str1=str1.replace('<br/>','\n')
print(str1)
global i
i=i+1
print(i)
cur.execute('''insert into 糗事百科 values(%d,%s);'''%(i,str1)) ##就是這個str1里面一有逗號就被當成了分隔符,一個欄位變成了倆欄位,然后就報錯了
conn.commit()
i=0
for page in range(1,35):
print(page)
html=get_html('http://www.qiushibaike.com/text/page/'+str(page)+'/')
get_list(html)
報錯資訊如下
C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python.exe C:/Users/Administrator/Desktop/python練習檔案/糗事百科.py
1
開學了,爸媽特意請了一天假去火車站送我。相別淚兩行,一副離了我就活不下去的樣子,我也悲從中來,拉著行李箱不知說什么好,半天擠出來一句“爸媽,一會回家小心點”我爸說“不,一會兒我跟你媽去泡溫泉”
1
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/python練習檔案/糗事百科.py", line 34, in <module>
get_list(html)
File "C:/Users/Administrator/Desktop/python練習檔案/糗事百科.py", line 27, in get_list
cur.execute('insert into 糗事百科 values(%d,%s);'%(i,str1))
psycopg2.ProgrammingError: 錯誤: 欄位 "開學了,爸媽特意請了一天假去火車站送我。相" 不存在
LINE 1: insert into 糗事百科 values(1,開學了,爸媽特意請了一天假去火...
^
Process finished with exit code 1
特地試了一下
>>> cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'1234'))
>>> cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'12,34')) ##多了一個逗號
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
cur.execute('insert into 糗事百科 values(%d,%s);'%(1,'12,34'))
psycopg2.ProgrammingError: 錯誤: INSERT 的運算式多于指定的欄位數
LINE 1: insert into 糗事百科 values(1,12,34);
一個長字符,text里面有逗號在所難免,怎么才能不被當成欄位分隔符?
uj5u.com熱心網友回復:
str1要用$$包圍起來。$$這里是str1的內容$$
uj5u.com熱心網友回復:
你這是python的問題吧,帶逗號的肯定是字串了,你把逗號轉義下應該就沒問題了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/99604.html
標籤:PostgreSQL
上一篇:菜鳥向各位高手們求一段sql代碼
