---恢復內容開始---
一、使用正則表達式爬取html標簽信息
正則表達式,通常是被用來檢索、替換那些符合某個模式的文本,由於需要在網頁標簽中提取出符合要求的字段,然后解析,而且是批量獲取,由於它們的字符串存在相同之處,又有不同之處,為了把它們從其他信息中都篩選出來,使用正則表達式來提取符合規則的字符信息。有了正則表達式后,就可以提取出它們的相同特征,將它們全部提出來。
import urllib.request
import re
url="http://tieba.baidu.com/p/4830826646"
response=urllib.request.urlopen(url)
html=response.read().decode("utf-8")
p=r'src="[^"]+c2f063f198ef76c6d0d2fb23ad17fdf6/70b4b0003af33a87ce7db1cace5c10385243b55f+\.jpg)"' #我沒有找到那個源代碼里的表達式,我是點擊圖片的屬性粘貼的
img=re.findall(re.compile(p),html)
filename="sina.jpg"
urllib.request.urlretrieve(img[0],filename,None,None)

C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe C:/Users/Administrator/PycharmProjects/untitled2/1-8.py
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled2/1-8.py", line 7, in <module>
img=re.findall(re.compile(p),html)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 233, in compile
return _compile(pattern, flags)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 301, in _compile
p = sre_compile.compile(pattern, flags)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\sre_compile.py", line 562, in compile
p = sre_parse.parse(p, flags)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\sre_parse.py", line 870, in parse
raise source.error("unbalanced parenthesis")
sre_constants.error: unbalanced parenthesis at position 89
這個是下載一張的,沒找出來錯誤,程序不能正常運行!!!
爬取網頁百度貼吧的內容:
import urllib.request
import re
import os #os模塊可以控制文件輸入輸出,這里用它可以新建文件夾
os.mkdir("d://message") #mkdir()方法,可以在它下面新建文件夾,使用chdir()可以直接切換的新建文件夾下
os.chdir("d://message")
url="http://tieba.baidu.com/p/4830826646" #導入url並完成標簽的提取
response=urllib.request.urlopen(url)
html=response.read().decode("utf-8")
p=r'src="(http://imgsrc.baidu.com/forum/w+[^"]+\.jpg)"' #將正則表達式值賦給變量p,注意提取圖片標簽的共性,並用正則表達式表示出來
imglist=re.findall(re.compile(p),html) #re 下的findall()方法可以爬取到符合正則表達式的標簽,存儲在imglist里
t=0 #設置變量t,用來給圖片取名字,每下載一張t+1,用for循環按行讀取imglist里的標簽,並把img作為url傳給urlretrieve
for img in imglist:
filename=str(t)+".jpg"
urllib.request.urlretrieve(img,filename,None)
t+=1
運行結果:
