美文网首页
2019-01-01

2019-01-01

作者: Python螺丝钉 | 来源:发表于2019-01-01 15:02 被阅读0次

    1.任务描述: 如何做一个爬虫

    2.相关知识:

    Python提供了urllib.request模块来处理url,这里我们将介绍其中两个常用的方法。
    Python内容匹配的re模块 

    re模块是Python的正则表达式模块,有关正则表达式的。

    函数  re.findall(pattern, string[, flags]):

    从string中查找所有符合pattern正则表达式模式的子串,以这些子串作为列表元素返回一个列表。

    参数说明:

    pattern:要搜寻的正则表达式。

    string:要检索的字符串。

    flag:可选项,可设置搜索的要求。可以选择输入re.S,re.I等。

    re.S:如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将\n当做一个普通的字符加入到这个字符串中,在整体中进行匹配。

    3.步骤:

    1. URL处理模块(库)

     import urllib.request as req

    2.根据URL获取网页

    url = 'http://www.gotonudt.cn/site/gfkdbkzsxxw/lqfs/index.html'

    3. 创建一个表示远程url的类文件对象

     req.urlopen('url ')

    webpage = req.urlopen(url)

    4. 读取网页的所有数据,并转换为uft-8编码

    data = webpage.read().decode('utf-8')

    print(data)

    5.re模块是Python的正则表达式模块,调用此模块,从string中查找所有符合pattern正则表达式模式的子串,以这些子串作为列表元素返回一个列表。

     import re

     jpglist = re.findall(r'src="http.+?.jpg"',data)

    6。对数据进一步选择,得到地址

    for jpgurl in jpglist:

        s = re.findall(r'http.+?.jpg',jpgurl)

        print(s)

    7.利用地址下载图片:

    def downLoad(jpgUrl,n):

        try:

            request.urlretrieve(jpgUrl,'%s.jpg' %n)

        except Exception as e:

            print(e)

        finally:

            print('图片%s 下载操作完成' % n)

    n=1

    for jpgurl in jpglist:

        s = re.findall(r'http.+?.jpg',jpgurl)

        downLoad(s[0],n)            #调用函数downLoad

        n= n +1

    8.完整代码如下:

    import re

    import urllib.request as req

    url = 'http://www.daimg.com/'

    webpage = req.urlopen(url)

    data = webpage.read().decode('GB2312')

    print(data)

    jpglist = re.findall(r'src="http.+?.jpg"',data)

    print(jpglist)

    def downLoad(jpgUrl,n):

        try:

            request.urlretrieve(jpgUrl,'%s.jpg' %n)

        except Exception as e:

            print(e)

        finally:

            print('图片%s 下载操作完成' % n)

    n=1

    for jpgurl in jpglist:

        s = re.findall(r'http.+?.jpg',jpgurl)

        downLoad(s[0],n)            #调用函数downLoad

        n= n +1

    相关文章

      网友评论

          本文标题:2019-01-01

          本文链接:https://www.haomeiwen.com/subject/ojqnlqtx.html