爬取4399网站的图片

使用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张图片
下面是,我爬取的图片(这仅仅是部分图片)
在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值