課程
/后端開發
/Python
/python遇見數據采集
腳本可以執行成功,數據庫只有一條數據,這是為什么?
2017-04-08
源自:python遇見數據采集 4-1
正在回答
#我剛剛測試了自己的代碼,發現完全沒有問題 #首先,這樣,你把下面這段代碼完全復制到你的運行環境進行測試 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() #這一次,應該只有一條語句插入了 #每次運行完,可視化數據庫軟件要記得刷新一下
慕粉3745191 提問者
果然是格式問題,前車之鑒.....
我的天,我也遇到了這個問題,,,,,好氣
解決了……
追逐奔跑
看上圖
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()
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reimport pymysql.cursorsresp = 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()
慕粉3745191 提問者 回復 追逐奔跑
額,帥哥,總共不到100行代碼,你完全可以全部粘出來的,單獨這一部分應該是沒有問題的。
是不是數據庫操作成了update?明顯是沒有Insert吧
追逐奔跑 回復 慕粉3745191 提問者
舉報
本教程讓你初步掌握Python進行數據采集,創造屬于你的價值
1 回答可以成功連接數據庫為什么每次都只有一條數據,最后的那一條,disclaimers這條
2 回答插入mysql數據庫只有一條數據?
2 回答Python向數據庫中插入數據時,數據庫仍然空白
2 回答導入MySQL數據庫
2 回答為什么爬不出數據
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-04-09
2017-07-12
果然是格式問題,前車之鑒.....
2017-07-12
我的天,我也遇到了這個問題,,,,,好氣
2017-04-09
解決了……
2017-04-09
看上圖
2017-04-09
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()
2017-04-09
額,帥哥,總共不到100行代碼,你完全可以全部粘出來的,單獨這一部分應該是沒有問題的。
2017-04-08
是不是數據庫操作成了update?明顯是沒有Insert吧