python爬取鬥圖啦表情包並下載到本地

迫於無聊,又恰好正在學習python,就來記錄一篇關於python爬取圖片連接下載本地的入門文章...html

主要用到的模塊: requestBeautifulSoup4 開發以前建議先看一下官方給出關於這兩個模塊的文檔node

開發環境:python

  • python3.6.6
  • vscode
  • node v8.10

不一樣的python版本在部分代碼上可能會有差別,請務必覈對好版本...git

開發流程解析

第一步:須要經過request獲取頁面的源代碼
response = requests.get(url, headers=header, timeout=30)
複製代碼
第二步:分析頁面結構

QQ截圖20181225105322.png

經過上圖發現,他的每個img標籤的class都是img-responsive lazy image_dtagithub

那麼咱們就能夠直接經過bs4的find_all屬性將其取出...數組

datas = soup.find_all(
        name="img", attrs={"class": "img-responsive lazy image_dta"})
複製代碼

由於find_all取出的是一個數組,那麼咱們就須要去進行循環讀取每一個img標籤學習

for data in datas:
        print("downloading:", data.attrs['data-original'])
        request.urlretrieve(
            data.attrs['data-original'], downPath+'\%s.jpg' % time.time())
複製代碼

這邊用的是request.urlretrieve進行資源下載...優化

須要注意的是,通常來說咱們都是去獲取圖片的src屬性,可是因爲這個網站使用了圖片延時加載,因此咱們直接獲取src的話就取到他默認的圖片,這邊咱們能夠看到img的data-original屬性是包含了圖片的路徑的,因此咱們就直接取data-original就能夠了....網站

最後main方法執行...ui

if __name__ == '__main__':
    pool = ThreadPool(4)
    urls = [
        "http://www.doutula.com/photo/list/?page={}".format(str(i)) for i in range(1, 3)]
    pool.map(getImg, urls)
    pool.close()
    pool.join()
複製代碼

這邊運用了線城池進行簡單的代碼優化,後面會加入代理池和隊列進行優化。

代碼地址:python爬取表情包並下載到本地

若是代碼有幫助到您,記得點個start哦~~~

相關文章
相關標籤/搜索