亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

腳本可以執行成功,數據庫只有一條數據,這是為什么?

http://img1.sycdn.imooc.com//58e8af51000181dc04800054.jpg

腳本可以執行成功,數據庫只有一條數據,這是為什么?

正在回答

9 回答

#我剛剛測試了自己的代碼,發現完全沒有問題
#首先,這樣,你把下面這段代碼完全復制到你的運行環境進行測試
from?urllib.request?import?urlopen
from?bs4?import?BeautifulSoup
import?re
import?pymysql.cursors
resp?=?urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup?=?BeautifulSoup(resp,"html.parser")
listUrls?=?soup.findAll("a",href=re.compile(r"^/wiki/"))
for?url?in?listUrls:
???if?not?re.search("\.(jpg|JPG)$",?url["href"]):
????print(url.get_text(),"<---->","https://en.wikipedia.org"+url["href"])
????#這里要縮進,不然后面面取得URL的值就是for遍歷的卒子后一個值,才會出現在打印過程中沒有問題,
????#但是插入數據庫出現問題,
????#不過我覺得在遍歷過程的外面連接數據庫可能好點,我覺得每一次遍歷都會連接數據庫的代價太高了
????connection=pymysql.connect(
???????host='localhost',
???????user='root',
???????password='lqmysql',
???????db='wikiurl',
???????charset='utf8mb4'
????)
????try:
?????with?connection.cursor()?as?cursor:
?????????sql="insert?into?`urls`(`urlhref`,`urlname`)values(%s,%s)"
?????????cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))
?????????connection.commit()
????finally:
???????connection.close()
#查看自己的運行結果,應該沒有什么問題,我的就是這樣的
#
#
#然后,你復制下面這段代碼去測試一下
from?urllib.request?import?urlopen
from?bs4?import?BeautifulSoup
import?re
import?pymysql.cursors
resp?=?urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup?=?BeautifulSoup(resp,"html.parser")
listUrls?=?soup.findAll("a",href=re.compile(r"^/wiki/"))
for?url?in?listUrls:
????if?not?re.search("\.(jpg|JPG)$",?url["href"]):
?????print(url.get_text(),"<---->","https://en.wikipedia.org"+url["href"])
connection=pymysql.connect(
????host='localhost',
????user='root',
????password='lqmysql',
????db='wikiurl',
????charset='utf8mb4'
)
try:
??with?connection.cursor()?as?cursor:
??????sql="insert?into?`urls`(`urlhref`,`urlname`)values(%s,%s)"
??????cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))
??????connection.commit()
finally:
????connection.close()
#這一次,應該只有一條語句插入了
#每次運行完,可視化數據庫軟件要記得刷新一下


0 回復 有任何疑惑可以回復我~
#1

慕粉3745191 提問者

解決了
2017-04-09 回復 有任何疑惑可以回復我~

果然是格式問題,前車之鑒.....

0 回復 有任何疑惑可以回復我~

我的天,我也遇到了這個問題,,,,,好氣

0 回復 有任何疑惑可以回復我~

解決了……

0 回復 有任何疑惑可以回復我~
#1

追逐奔跑

如果是我猜對了問題所在,希望你采納哦~~~
2017-04-09 回復 有任何疑惑可以回復我~

http://img1.sycdn.imooc.com//58e9dd7e0001a73e04680138.jpg

看上圖

0 回復 有任何疑惑可以回復我~
from?urllib.request?import?urlopen
from?bs4?import?BeautifulSoup
import?re
import?pymysql.cursors
resp?=?urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup?=?BeautifulSoup(resp,"html.parser")
listUrls?=?soup.findAll("a",href=re.compile("^/wiki/"))
for?url?in?listUrls:
???if?not?re.search("\.(jgp||JPG)$",?url["href"]):
????print(url.get_text(),"<---->","https://en.wikipedia.org"+url["href"])
????#這里要縮進,不然后面面取得URL的值就是for遍歷的卒子后一個值,才會出現在打印過程中沒有問題,
????#但是插入數據庫出現問題,
????#不過我覺得在遍歷過程的外面連接數據庫可能好點,我覺得每一次遍歷都會連接數據庫的代價太高了
????connection=pymysql.connect(
???????host='localhost',
???????user='root',
???????password='lqmysql',
???????db='wikiurl',
???????charset='utf8mb4'
????)
????try:
?????with?connection.cursor()?as?cursor:
?????????sql="insert?into?`urls`(`urlhref`,`urlname`)values(%s,%s)"
?????????cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))
?????????connection.commit()
????finally:
???????connection.close()


0 回復 有任何疑惑可以回復我~
#1

慕粉3745191 提問者

還是一樣,,,我排查了,運行一次腳本,數據庫增加一條。插入的是最后的一條數據。
2017-04-09 回復 有任何疑惑可以回復我~

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pymysql.cursors
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup = BeautifulSoup(resp,"html.parser")
listUrls = soup.findAll("a",href=re.compile("^/wiki/"))
for url in listUrls:
? ?if not re.search("\.(jgp||JPG)$", url["href"]):
? ? print(url.get_text(),"<---->","https://en.wikipedia.org"+url["href"])
connection=pymysql.connect(
? ?host='localhost',
? ?user='root',
? ?password='lqmysql',
? ?db='wikiurl',
? ?charset='utf8mb4'
)
try:
?with connection.cursor() as cursor:
? ? ?sql="insert into `urls`(`urlhref`,`urlname`)values(%s,%s)"
? ? ?cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"]))
? ? ?connection.commit()
finally:
? ?connection.close()

0 回復 有任何疑惑可以回復我~
#1

追逐奔跑

如果不是慕課網回復過程中把你的代碼進行的縮進,那么就是格式出了問題,Python是一個嚴格縮進的語言,理應從connection一直到最后一行,向后縮進一次,或者說是向后四個空格
2017-04-09 回復 有任何疑惑可以回復我~
#2

慕粉3745191 提問者 回復 追逐奔跑

這個要怎么排查?
2017-04-09 回復 有任何疑惑可以回復我~

額,帥哥,總共不到100行代碼,你完全可以全部粘出來的,單獨這一部分應該是沒有問題的。


0 回復 有任何疑惑可以回復我~
#1

慕粉3745191 提問者

我運行一次腳本,數據庫里插入一條數據
2017-04-09 回復 有任何疑惑可以回復我~

是不是數據庫操作成了update?明顯是沒有Insert吧

0 回復 有任何疑惑可以回復我~
#1

慕粉3745191 提問者

執行sql是insert
2017-04-09 回復 有任何疑惑可以回復我~
#2

追逐奔跑 回復 慕粉3745191 提問者

不介意把你寫的代碼粘出來吧?
2017-04-09 回復 有任何疑惑可以回復我~
#3

慕粉3745191 提問者 回復 追逐奔跑

try: with connection.cursor() as cursor: sql="insert into `urls`(`urlhref`,`urlname`)values(%s,%s)" cursor.execute(sql,(url.get_text(),"https://en.wikipedia.org"+url["href"])) connection.commit() finally: connection.close()
2017-04-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

腳本可以執行成功,數據庫只有一條數據,這是為什么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號