python网络爬虫(1)--抓取图片


所谓网络爬虫就是从特定的网页中获取你想要的东西,更确切的说,是从网页源代码中筛选你想要的东西。


本文将用比较简单的方法从网页中下载一些图片。


主要工具模块有:urllib.request 和html.parser  是的,真如你所见,不用正则表达式

步骤很简单:

1.获取网页源代码

2.从源代码中提取需要的信息(这里指图片的下载链接)

3.将图片链接打开并下载到目录。


抓的网址为:http://www.easyicon.net/iconsearch/book/             (下载图标)


代码如下:

1.获取网页源代码

# getimage.py
import urllib.request
from html.parser import HTMLParser

url = 'http://www.easyicon.net/iconsearch/book/'
# pretend as a browser
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1;\
             WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 '}
url2 = urllib.request.Request(url, headers=headers)

# get the source code form url
fb = urllib.request.urlopen(url2)
souCode = fb.read().decode('utf-8')
注意:如果不加上headers进行封装,鉴于大多数网页都有反爬虫策略,你很有可能会得到403错误!!!


2.从源代码中获取信息

因为这是一个筛选的过程,所以你最好写打开网页源代码看看你需要的东西具体表现是什么(可以有火狐或Google游览器点击右键获得),比方说下载图片即是找到下载的链接,然后将其拿下来,比方说我要找的就是这个:

<a href="http://download.easyicon.net/png/504077/128/" title="PNG 格式图标下载">

里面的地址

这里用简单的HTMl解析器,而不用正则表达式(具体怎么用见文档):

# get what you want form souCode
downLists = []


class MyHTMLParser(HTMLParser):

    def handle_starttag(self, tag, attrs):
        if tag == 'a':
            if len(attrs) == 2:
                if attrs[1][1] == 'PNG 格式图标下载':
                    downLists.append(attrs[0][1])

parser = MyHTMLParser()
parser.feed(souCode)

3.将链接下载并保存到目录:

# download form urlLists to your catalog
i = 0
for lists in downLists:
    print(lists)
    urllib.request.urlretrieve(lists, 'C:\image\down%s.png' % i)
    i += 1


以上,将代码连接并执行,你的目录就有图片啦啦啦。。。

照葫芦画瓢,就可以下载其他东西了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值