Python練習04-異步加載,下載網頁圖片。header和代理ip

跟著老師做的練習,我發現自己沒有能獨立做出來。算法方面不如老師做的優秀。

爬取得是knewone.com網站,此網站是國內異步加載數據的網站。

跟著麻瓜老師的課程學習的異步加載,第一個難點是,找到page=2,page=3....通過看源代碼找到的。

找到之后,就輕松許多了,那就是下載圖片了。

代碼如下:


#執行的是下載page3頁面的圖片到本地文件夾。

from bs4 import BeautifulSoup
import requests,urllib.request

url='https://knewone.com/things/categories/ge-ren-pei-shi/xiang-bao?sort_by=latest&page=3'
path='/Users/pro/Desktop/a2/'
#注意一下headers的標準寫法
headers={
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36 QQBrowser/4.1.4132.400'
}

# 采用代理,否則打開不了網頁。格式留在這里,未必能用到。
proxies = {"http": "127.0.0.1:9743"}

def download(url):
    filename=url.split('!')[-2]  #[-1]表示倒數第一個。[-2]表示倒數第二個。這里是為了處理鏈接的格式,因為要把鏈接的一部分當做圖片名字的
    urllib.request.urlretrieve(url,path + filename[-10:])
    print("done")

#下面的函數測試可以使用,很正常。
def get_one_pagelink(url):
    wb_data=requests.get(url,headers=headers)
    soup=BeautifulSoup(wb_data.text,'lxml')
    imgs=soup.select('a.cover-inner > img')
    for img in imgs: 
        src=img.get('src')
        print(src)
        download(src) #這里很關鍵,這是算法方面的提高。我就沒有想到這么解決問題。
get_one_pagelink(url)# 執行程序,得出結果。下載圖片到本地a2文件夾。

#一開始,我打算下載所有頁面的鏈接,然后再讓for遍歷,挨個下載到本地,思路我相信沒錯,但是沒有老師的這個思路簡潔。

最后升級了一下,下載了前20頁的圖片到本地文件夾,代碼如下


from bs4 import BeautifulSoup
import requests,urllib.request

url='https://knewone.com/things/categories/ge-ren-pei-shi/xiang-bao?sort_by=latest&page=3'
path='/Users/pro/Desktop/a2/'
#注意一下headers的標準寫法
headers={
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36 QQBrowser/4.1.4132.400'
}

# 采用代理,否則打開不了網頁。格式留在這里,未必能用到。
proxies = {"http": "127.0.0.1:9743"}

def download(url):
    filename=url.split('!')[-2]  #[-1]表示倒數第一個。[-2]表示倒數第二個。這里是為了處理鏈接的格式,因為要把鏈接的一部分當做圖片名字的
    urllib.request.urlretrieve(url,path + filename[-10:])
    print("done")

#下面的函數測試可以使用,很正常。
def get_one_pagelink(url):
    wb_data=requests.get(url,headers=headers)
    soup=BeautifulSoup(wb_data.text,'lxml')
    imgs=soup.select('a.cover-inner > img')
    for img in imgs: 
        src=img.get('src')
        print(src)
        download(src) #這里很關鍵,這是算法方面的提高。我就沒有想到這么解決問題。

#這段代碼,我也不理解,就是抄老師的,原封不動相當于。很成功。這個for遍歷有些吊炸天。
all_imglinks = ['https://knewone.com/things/categories/ge-ren-pei-shi/xiang-bao?sort_by=latest&page={}'.format(number) for number in range(1,10)]
for single_url in all_imglinks:
    get_one_pagelink(single_url)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,251評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • 待兩個時辰之后,我便可以到達淵虹祭崖。 這是世上最瑰麗絕美的斷崖。柏翠立于崖頂,垂直而觀成青龍狀巍峨攀...
    mei777閱讀 904評論 1 1
  • 本文參加#鄉憶·鄉思·鄉情.鄉戀#活動,本人承諾,文章內容為原創,且未在其他平臺發表過。 古銅色的濾鏡...
    綠蘿卜兒閱讀 183評論 0 0