亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

Python系列之五_爬蟲抓圖

2019-11-06 07:51:42
字體:
來源:轉載
供稿:網友

  Python系列之五_爬蟲抓圖

  前面我們粗略地學習了Python語言的語法,一直學語法也挺無聊的,現在讓我們讓做一些有趣的事情。

  例如你在百度貼吧里看到一篇文章,里面有很多好看的圖片,但是一張張另存比較慢,學完Python語言后,我們可以編寫一個爬蟲程序,把所有圖片全部抓下來。

  我們的思路是這樣的:

  首先,把這個網頁的HTML源代碼先抓下來;

  然后,分析HTML源代碼,找出所有圖片的鏈接;

  最后把所有圖片下載下來。

  一、抓取HTML源代碼

#!/usr/bin/python# -*- coding: UTF-8 -*-import urllibdef get_html(url):    page = urllib.urlopen(url)    html = page.read()    return htmlht = get_html("http://tieba.baidu.com/p/5004440579")PRint ht  下面我們來分析這段代碼。

  “import urllib”這句表示導入urllib這個庫,感覺有點像java的import。

  def部分是定義一個函數,函數需要與前面隔開兩行。函數體縮進一層。

  urllib.urlopen()函數用于打開一個url,并返回一個頁面對象。

  page.read()函數讀取頁面的html源代碼。

  運行這段代碼,可以發現控制臺打印出了html源代碼。

  二、解析HTML源代碼并找出所有圖片鏈接  這里需要用到正則表達式。現在正則表達式可以說是幾乎所有編程語言必會的知識點了。

  我們利用Chrome瀏覽器的開發者工具,按快捷鍵F12,在源代碼中查看圖片的鏈接:

  發現圖片在HTML源代碼中,格式都有:src="http*.jpg"

  下面編寫一段代碼解析其中的圖片鏈接:

#!/usr/bin/python# -*- coding: UTF-8 -*-import urllibimport redef get_html(url):    page = urllib.urlopen(url)    html = page.read()    return htmldef get_img(html):    reg = r'src="(http.+?/.jpg)"'    img_re = re.compile(reg)    img_list = re.findall(img_re, html)    return img_listht = get_html("http://tieba.baidu.com/p/5004440579")li = get_img(ht)for i in li:    print i  在這段程序中,編寫了另一個函數get_img,用于根據html源代碼,解析圖片鏈接。

  由于使用到正則表達式,所以引入了re庫。

  在get_img函數中,首先定義一個正則表達式reg,其中r前綴表示它是一個正則表達式。

  src="(http.+?/.jpg)"這串字符表示我們要在html源代碼中查找的匹配項,正則表達式定義一些規則,可以通配。

  其中:

    .  匹配任意字符

    +  表示前面的內容出現1次或多次

    *  表示前面的內容出現0次或多次

    ?  匹配0個或1個由前面的正則表達式定義的片段,非貪婪方式  如果正則表達式中出現以上通配符,則用反斜杠進行轉義。

  所以,src="(http.+?/.jpg)"就表示http后可以帶任意字符,任意字符出現1次或多次,后綴名為.jpg。一對小括號表示里面的內容是我們要截取的信息。

  上述程序運行后,發現還有一些問題,它把一些不是圖片的片斷也取出來了,所以后來我把正則表達式修改為:

  reg = r'src="(http[^"]+?/.jpg)"'

  其中[^"]表示http后的字符不能是雙引號,^符號表示排除,除了雙引號外其它任意字符都匹配。

  三、下載所有圖片

  在上一步拿到圖片鏈接之后,剩下的工作就很簡單了,Python中下載數據很簡單,有非常簡單好用的庫。

def get_img(html):    reg = r'src="(http[^"]+?/.jpg)"'    img_re = re.compile(reg)    img_list = re.findall(img_re, html)    n = 0    for img_url in img_list:        urllib.urlretrieve(img_url, 'E:/tmp/%s.jpg' % n)        n += 1    return img_list  我們修改了一下get_img()函數,并添加了幾句代碼?! ≡诖a中,主要調用了urllib的urlretrieve()函數,這個函數的兩個參數,第1個參數表示要下載的url,第2個參數表示要保存的本地文件名。

  由于我們想讓圖片依次命名為1.jpg、2.jpg、...,所以定義了一個變量n,讓它遞增。

  還有一個用法可能比較陌生:'E:/tmp/%s.jpg' % n,在Python的字符串中可以定義一個占位符,就象C語言一樣,有%d、%s等,其后,跟上實際用到的變量,如果有兩個以上占位符,需要用一個小括號,例如:'%s: %d' % ('張三', 22)

  運行結束,查看一下本地的E:/tmp文件夾,圖片都下來啦:

  四、結尾

  在寫這篇文章時,由于本人是Python語言初學者,所以參考了一些網上的文章,特別感謝“蟲師”的一篇文章,把文章的鏈接貼出,大家參照學習:

  http://www.cnblogs.com/fnng/p/3576154.html

  在此,也將我的完整源代碼貼出來:

#!/usr/bin/python# -*- coding: UTF-8 -*-import urllibimport redef get_html(url):    page = urllib.urlopen(url)    html = page.read()    return htmldef get_img(html):    reg = r'src="(http[^"]+?/.jpg)"'    img_re = re.compile(reg)    img_list = re.findall(img_re, html)    n = 0    for img_url in img_list:        urllib.urlretrieve(img_url, 'E:/tmp/%s.jpg' % n)        n += 1    return img_listht = get_html("http://tieba.baidu.com/p/5004440579")for i in get_img(ht):    print i


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久免费观看视频| 中日韩美女免费视频网址在线观看| 91久久久久久久久久久久久| 欧洲午夜精品久久久| 亚洲美女www午夜| 国产精品高清网站| 欧美亚洲另类制服自拍| 国产精品精品视频一区二区三区| 欧美黑人性生活视频| 日韩在线免费高清视频| 亚洲成人av资源网| 久久久久久久久亚洲| 国产精品三级久久久久久电影| 国内精品视频在线| 一区二区在线视频播放| 国产成人精品一区二区在线| 2021久久精品国产99国产精品| 日韩精品高清在线观看| 欧美日韩成人在线播放| 日韩大片免费观看视频播放| 日韩av在线免费播放| 成人欧美一区二区三区黑人| 久久久久久久久爱| 日韩亚洲欧美中文高清在线| 亚洲第一精品久久忘忧草社区| 精品毛片三在线观看| 亚洲第一页中文字幕| 亚洲高清免费观看高清完整版| 久久亚洲精品国产亚洲老地址| 久久国产精品首页| 久久久久久久久久久网站| 55夜色66夜色国产精品视频| 亚洲美女喷白浆| 宅男66日本亚洲欧美视频| www.亚洲男人天堂| 日韩欧美国产视频| 国产99视频在线观看| 亚洲精品不卡在线| 51午夜精品视频| 好吊成人免视频| 色综合久久久久久中文网| 国产精品av在线播放| 国产日韩欧美91| 日韩av一区在线观看| 中文日韩在线观看| 久久不射电影网| 国产精品香蕉在线观看| 日韩一区二区av| 在线播放日韩专区| 国产不卡一区二区在线播放| 国产精品久久不能| 国产精品老牛影院在线观看| 亚洲精品国产综合区久久久久久久| 精品视频在线导航| 黑人巨大精品欧美一区免费视频| 久久亚洲国产成人| 久久精品最新地址| 欧美日韩中文字幕在线| 国产精品久久久久久久7电影| 久久亚洲成人精品| 久久综合免费视频| 久热精品视频在线观看| 久久人人爽亚洲精品天堂| 欧美xxxx18国产| 欧美日韩成人精品| 亚洲精品自拍视频| 亚洲第一男人av| 久久久精品中文字幕| 国产+成+人+亚洲欧洲| 国产美女扒开尿口久久久| 日本一区二区在线免费播放| 久久久999国产精品| 欧美疯狂xxxx大交乱88av| 欧美做受高潮1| 97国产精品视频人人做人人爱| 日韩在线观看视频免费| 亚洲第一国产精品| 少妇高潮 亚洲精品| 91久久久久久久| 久久久久久久av| 欧美精品aaa| 欧美电影在线观看| 欧美日韩国产一区二区三区| 国产精品视频地址| 久久成人免费视频| 国产成人拍精品视频午夜网站| 国产精品福利无圣光在线一区| 亚洲va欧美va在线观看| 欧美电影电视剧在线观看| 国产精品亚洲一区二区三区| 国产成人久久久精品一区| 日韩精品在线电影| 在线观看亚洲区| 欧美日韩xxx| 青青久久av北条麻妃海外网| 欧美丰满少妇xxxxx做受| 国产欧美精品在线播放| 久久国产精品电影| 欧美视频一二三| 亚洲va久久久噜噜噜| 福利视频导航一区| 亚洲精品综合久久中文字幕| 国产精品美女www| 国产精品手机播放| 日韩免费在线视频| 成人av在线天堂| 亚洲一区中文字幕| 国产精品日韩在线| 欧美日本亚洲视频| 成人午夜激情免费视频| 国产精品人成电影在线观看| 在线日韩欧美视频| 97**国产露脸精品国产| 久热精品视频在线观看| 欧美日韩在线视频一区二区| 91福利视频在线观看| 九九精品视频在线| 久久精品国产久精国产一老狼| 日韩人在线观看| 国产亚洲精品久久久久久777| 欧美人与性动交| 久久久人成影片一区二区三区| 久久影视电视剧免费网站清宫辞电视| 欧美成人免费网| 精品高清美女精品国产区| 日韩欧美aⅴ综合网站发布| 91精品国产91久久久久久久久| 欧美国产视频一区二区| 日本最新高清不卡中文字幕| 亚洲丁香婷深爱综合| 伊人久久久久久久久久久| 欧美亚洲视频在线观看| xvideos国产精品| 尤物九九久久国产精品的分类| 97在线视频免费看| 久久亚洲影音av资源网| 国产一区二区三区视频在线观看| 一本色道久久88综合亚洲精品ⅰ| 精品国产乱码久久久久久天美| 91沈先生作品| 中文字幕日韩在线播放| 2020国产精品视频| 欧美理论电影网| 亚洲毛茸茸少妇高潮呻吟| 久热精品视频在线免费观看| 欧美性猛交xxxx免费看| 中文字幕亚洲综合| 欧美亚洲另类视频| 91久久久久久久久久| 久久69精品久久久久久久电影好| 精品偷拍各种wc美女嘘嘘| 日韩免费观看在线观看| 午夜剧场成人观在线视频免费观看| 97久久精品人搡人人玩| 欧美成人免费va影院高清| 国产在线一区二区三区| 欧美激情喷水视频| 国产欧美精品一区二区三区-老狼| 国产亚洲aⅴaaaaaa毛片| 日韩久久精品电影| 欧美丝袜一区二区三区| 久久久噜噜噜久久中文字免| 国产欧美日韩中文| 欧美日韩国产成人在线观看|