最近自學(xué)爬蟲的過(guò)程中,發(fā)現(xiàn)了這本書上個(gè)別會(huì)引發(fā)運(yùn)行錯(cuò)誤的代碼同仆,解決后萤捆,進(jìn)行記錄。
一俗批,第五章第一節(jié)媒體文件中的一段代碼
書上原代碼為:
def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory):
path = adsoluteUrl.replace("www.","")
path = path.replace(baseUrl, "")
path = downloadDirectory+path
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
return path
運(yùn)行時(shí)俗或,會(huì)報(bào)錯(cuò)。我的思路如下:
第一步岁忘,對(duì)照書本核對(duì)代碼正確與否辛慰。
第二步,將報(bào)錯(cuò)輸入搜索引擎百度臭觉、谷歌昆雀,沒有搜到。
第三步蝠筑,嘗試自己去修改代碼狞膘。一句句代碼思考的過(guò)程中,發(fā)現(xiàn)了什乙,要下載的文件名挽封,在path所記錄的url就有,在這個(gè)文件名后有多余的字符串臣镣,這段多余的字符串辅愿,使之無(wú)法正確識(shí)別文件名智亮。
于是嘗試加了一段正則表達(dá)式。去除多余的字符串点待。
在嘗試過(guò)程中阔蛉,發(fā)現(xiàn)網(wǎng)上有一帖子講解該本書上該段代碼的一個(gè)修改辦法,于是進(jìn)行了嘗試癞埠。順利改完状原。在這里用了re.sub()函數(shù)。
改后的代碼為:
def getDownloadPath(baseUrl, absoluteUrl, downloadDirectory):
path = absoluteUrl.replace("www.", "")
path = path.replace(baseUrl, "")
path = re.sub("\?.*", "", path)
path = downloadDirectory+path
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
return path
找到的原地址如下:
http://www.jingouwangzi.com/archives/327
二苗踪、第五章第三節(jié)mysql關(guān)于連接數(shù)據(jù)庫(kù)函數(shù)
原代碼如下:
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',
user='root', passwd='123456', db='mysql', charset='utf8')
報(bào)錯(cuò)AttributeError: module 'socket' has no attribute 'AF_UNIX'
改一個(gè)參數(shù)即可颠区,改后如下:
conn = pymysql.connect(host='127.0.0.1', port=3306,
user='root', passwd='123456', db='mysql', charset='utf8')
三、第五章第三節(jié)mysql的一段創(chuàng)建表單的代碼
原代碼如下:
CREATE TABLE 'wikipedia'.'pages'(
'id' INT NOT NULL AUTO_INCREMENT,
'url' VARCHAR(255) NOT NULL,
'created' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY('id'))
運(yùn)行報(bào)錯(cuò)如下:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''wikipedia'.'pages'(
'id' INT NOT NULL AUTO_INCREMENT,
'url' VARCHAR(255) NOT ' at line 1
思路如下:
第一步通铲,查詢和書上是否一致毕莱。(一致)
第二步,搜索錯(cuò)誤颅夺,搜不到(可能是我智商拙計(jì)朋截,不得搜索的精髓所在。)吧黄。
第三步质和,解析代碼,自行解決問題稚字。
這就是一段創(chuàng)建新表的代碼。在對(duì)照前面運(yùn)行正常的mysql代碼后厦酬,發(fā)現(xiàn)了胆描,前面的表名和字段聲明都沒用引號(hào),嘗試全部去除引號(hào)仗阅,引發(fā)了表名的錯(cuò)誤聲明昌讲,再修改表名后,運(yùn)行正常减噪。
代碼如下:
CREATE TABLE wikipedia_pages(
id INT NOT NULL AUTO_INCREMENT,
url VARCHAR(255) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY(id));
此處可以用點(diǎn)命名短绸,前提是聲明了數(shù)據(jù)庫(kù)wikipedia,本書下文也要用到wikipedia筹裕。
現(xiàn)階段就遇到這些醋闭。如果哪里理解錯(cuò)誤,大神看到請(qǐng)多多指點(diǎn)朝卒。如果后面我還活著证逻,遇到這本書上有問題的,依舊會(huì)嘗試記錄下來(lái)抗斤。