課程
/后端開(kāi)發(fā)
/Python
/python正則表達(dá)式
如圖,listurl是空的列表,用的python3
2017-11-25
源自:python正則表達(dá)式 4-2
正在回答
我用的pycharm,今天才手寫(xiě)的代碼,改了幾個(gè)小地方,都寫(xiě)在注釋里面,樓主看看注意到?jīng)]有,謝謝。
import re
import urllib
req = urllib.request.urlopen('http://idcbgp.cn/course/list')
#此處加上decode(),不然拿下來(lái)的數(shù)據(jù)都是亂碼
buf = req.read().decode("utf-8")
#老師講課的url地址已經(jīng)發(fā)生改變,改一下正則匹配就好
# listurl = re.findall(r'src=.+\.jpg', buf)
listurl = re.findall(r'//img.+?\.jpg', buf)
# 改成非貪婪模式就行了
#前面沒(méi)有了http:,那么這里手動(dòng)加上
for index,app_id in enumerate(listurl):
? ? listurl[index] = str(app_id).replace('//', 'http://')
? ? print(index, listurl[index])
print(listurl)
i = 0
for url in listurl:
? ? #寫(xiě)入模式修改為“wb+”,不然不支持將bytes寫(xiě)入,親測(cè)
? ? f = open(str(i)+".jpg", "wb+")
? ? req = urllib.request.urlopen(url)
? ? buf = req.read()
? ? f.write(buf)
? ? i+=1
問(wèn)題就是老師講課的時(shí)候圖片地址是你所寫(xiě)的,但是現(xiàn)在已經(jīng)變成了
//img1.sycdn.imooc.com//598027a90001df8006000338-240-135.jpg
稍微修改一下就可以用了
正則表達(dá)式寫(xiě)錯(cuò)了吧,是r''不是br''
舉報(bào)
如何使用正則處理文本,帶你對(duì)python正則有個(gè)全面了解
1 回答爬取的地址寫(xiě)入問(wèn)題
1 回答為何爬京東首頁(yè)的圖片失敗啊
1 回答尷尬的問(wèn)一下,爬取圖片后為什么找不到圖片
1 回答為什么下面這句代碼匹配為空呢? 正則表達(dá)式不是去匹配"123abc"中的子串嗎?"abc"是符合表達(dá)式要求的啊
2 回答不知道為什么,同樣的正則表達(dá)式,python2爬取的鏈接都正確,python3爬取的鏈接返回的url_list有個(gè)別錯(cuò)誤,有誰(shuí)知道是什么原因嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2018-01-27
我用的pycharm,今天才手寫(xiě)的代碼,改了幾個(gè)小地方,都寫(xiě)在注釋里面,樓主看看注意到?jīng)]有,謝謝。
import re
import urllib
req = urllib.request.urlopen('http://idcbgp.cn/course/list')
#此處加上decode(),不然拿下來(lái)的數(shù)據(jù)都是亂碼
buf = req.read().decode("utf-8")
#老師講課的url地址已經(jīng)發(fā)生改變,改一下正則匹配就好
# listurl = re.findall(r'src=.+\.jpg', buf)
listurl = re.findall(r'//img.+?\.jpg', buf)
# 改成非貪婪模式就行了
#前面沒(méi)有了http:,那么這里手動(dòng)加上
for index,app_id in enumerate(listurl):
? ? listurl[index] = str(app_id).replace('//', 'http://')
? ? print(index, listurl[index])
print(listurl)
i = 0
for url in listurl:
? ? #寫(xiě)入模式修改為“wb+”,不然不支持將bytes寫(xiě)入,親測(cè)
? ? f = open(str(i)+".jpg", "wb+")
? ? req = urllib.request.urlopen(url)
? ? buf = req.read()
? ? f.write(buf)
? ? i+=1
2018-01-27
問(wèn)題就是老師講課的時(shí)候圖片地址是你所寫(xiě)的,但是現(xiàn)在已經(jīng)變成了
稍微修改一下就可以用了
2017-11-28
正則表達(dá)式寫(xiě)錯(cuò)了吧,是r''不是br''