最近正在學(xué)Python爬蟲,從最基礎(chǔ)的學(xué)起,即用 urllib 和 re 這兩個(gè)包學(xué)抓取。用教材(韋瑋《精通Python網(wǎng)絡(luò)爬蟲》)第77頁(yè)的方法爬京東的圖片完全沒(méi)問(wèn)題,但想照貓畫個(gè)虎,爬一下當(dāng)當(dāng)網(wǎng)兒童圖書版塊的圖片,卻怎么也行不通,用正則表達(dá)式做的 pattern,死活就是沒(méi)有匹配到任何鏈接地址。當(dāng)當(dāng)網(wǎng)初始頁(yè)面:http://category.dangdang.com/pg1-cp01.41.26.00.00.00.html求大神指正!import re, urllib.requestdef craw(url, page): s = str(urllib.request.urlopen(url).read()) p = "<img data-original='(.+?)'" lnks = re.findall(p, s) t = re.search(p, s) x = 1 for lnk in lnks: fname = 'D:/Python/ddIMGs/book_kid/' + str(page) + '-' + str(x) try: urllib.request.urlretrieve(lnk, filename=fname) except urllib.error.URLError as e: if hasattr(e, 'code'): x += 1 if hasattr(e, 'reason'): x += 1 x += 1for i in range(1, 2): url = 'http://category.dangdang.com/pg' + str(i) + '-cp01.41.26.00.00.00.html' craw(url, i)
2 回答

慕碼人2483693
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
修改第4、5兩行如下,貌似就解決問(wèn)題了:
1 s = str(urllib.request.urlopen(url).read().decode(encoding='gbk')) 2 p = re.compile("<img data-original='(.+?)'", re.S)
編碼真的是個(gè)麻煩的問(wèn)題,正則表達(dá)式也是,看來(lái)得多練習(xí)才行!

LEATH
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
如果s是正確的話,那應(yīng)該能找得到。
urllib.request.urlopen(url).read().decode(encoding='utf8')這才對(duì)。
- 2 回答
- 0 關(guān)注
- 897 瀏覽
添加回答
舉報(bào)
0/150
提交
取消