使用Pyhton和正则表达式进行爬虫
import urllib.request
import re
url="http://www.4399.com/" #4399的网站
respose1=urllib.request.urlopen(url)
page=respose1.read()
listurl=re.findall(r'http://[a-zA-Z0-9\._/]+\.jpg',str(page)) //匹配的正则表达式
i=0
for u in listurl :
f=open('H:\\Client2\\'+str(i)+'个.jpg',"wb+")//在该目录下建立.jpg文件进行写入
rep= urllib.request.urlopen(u)
buf= rep.read()
f.write(buf)
i+=1
代码的基本思路:
首先 import urllib.request包(用于爬虫)和re包(用于正则匹配)
确定你要爬取的网站放在变量url中,然后就进行爬取。
respose1=urllib.request.urlopen(url)
爬取的内容就在respose1.read()方法就是爬取的内容,不过这是字节类型的,需要转为string类型。然后就是需要寻找图片了。
你可以首先观察4399网站上图片的网址类型(就是打开4399网站,对一个图片右键,观察网页源代码就可以清楚地看到这个图片的网址),
4399网站上的一个图片网址类型——img标签
<img src="http://imga.5054399.com/upload_pic/2017/5/11/4399_10520731217.jpg" alt="植物大战僵尸">
#我们主要选择 'http://imga.5054399.com/upload_pic/2017/5/11/4399_10520731217.jpg'这一部分进行匹配
然后根据图片的网址类型,写好匹配出来的正则表达式,类似我这样。
listurl=re.findall(r'http://[a-zA-Z0-9\._/]+\.jpg',str(page))
以http://开头,中间必须匹配的字符必须在[a-zA-Z0-9._/]这个范围中,+代表匹配前一个字符1次或者无限次,最后用 反斜杠\ 转义一下点. (即必须以.jpg结尾),匹配之后的结果,用re模块的findall方法找到所有匹配到的元素放在listurl(是一个list类型)
下面就是用一个循环,先建立 i个.jpg文件,然后对listurl列表中每个图片的网址进行搜索,然后爬取到内容,写入 i个.jpg文件中直至循环结束。
一共大概有711张图片
下面是,我爬取的图片(这仅仅是部分图片)