最近正在學Python爬蟲,從最基礎的學起,即用 urllib 和 re 這兩個包學抓取。用教材(韋瑋《精通Python網絡爬蟲》)第77頁的方法爬京東的圖片完全沒問題,但想照貓畫個虎,爬一下當當網兒童圖書版塊的圖片,卻怎么也行不通,用正則表達式做的 pattern,死活就是沒有匹配到任何鏈接地址。當當網初始頁面: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貢獻1860條經驗 獲得超9個贊
修改第4、5兩行如下,貌似就解決問題了:
1 s = str(urllib.request.urlopen(url).read().decode(encoding='gbk')) 2 p = re.compile("<img data-original='(.+?)'", re.S)
編碼真的是個麻煩的問題,正則表達式也是,看來得多練習才行!

LEATH
TA貢獻1936條經驗 獲得超7個贊
如果s是正確的話,那應該能找得到。
urllib.request.urlopen(url).read().decode(encoding='utf8')這才對。
- 2 回答
- 0 關注
- 898 瀏覽
添加回答
舉報
0/150
提交
取消