爬指定网址图片的小爬虫(自己写的见笑了)

Python 

我们就爬一下一号店女装的图片吧... ...  环境 py3.6


import urllib.request
import re
import os




#将页面装换成字符串
def registerUrlStr(url):
    # 模拟请求头
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 "
                      "(KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"}
    # 设置请求体
    req = urllib.request.Request(url, headers=headers)

    reponse = urllib.request.urlopen(req)

    HTML = reponse.read().decode("utf-8")


    return HTML

封装方法  将页面转换成字符串。 注意:有事会报错   说解析不了,没关系换网址.....

headers : 是360浏览器的请求头

方法作用:放入网页url  返回数据字符串。

为什么一定要转换成字符串呢?因为下边我们用正则表达式时,传入要寻找的对象必须是字符串类型数据。

if __name__ == '__main__':

    url = r"http://search.yhd.com/c0-0/k%25E5%25A5%25B3%25E8%25A3%2585/" (网页地址)
    path = r"E:\WorkSpace\Day10\image" (图片存储路径)

    htmlData = registerUrlStr(url) 

    # writerStr(path, htmlData)

    # 图片的正则表达式

    pat1 = r'<img src="//(.*?)"/>'

    re_joke = re.compile(pat1, re.S)
    imageList = re_joke.findall(htmlData)
    print(len(imageList))
    print(imageList)
    #
    #下载图片存储
    num = 1
    for imageurl in imageList:
        try:

            path1 = os.path.join(path, str(num)+".jpg")
            num += 1

            #把图片下载到本地储存
            urllib.request.urlretrieve("http://" + imageurl, filename=path1)
        except ValueError as e:

            continue

这个小工能的难点在于数据的分析。也就是图片正则表达式的分析。 我们来看一下一号店女装网页,按F12进入开发者模式


再来看一下 图片的正则表达式: 

pat1 = r'<img src="//(.*?)"/>'

写法自行体会。

你只需要改改你的path路径就能下载保存图片了




阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页