---恢复内容开始---
一、使用正则表达式爬取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
运行结果:
