python爬取網頁的時11004錯誤

y363893017發表於2017-09-04
# -*- coding;utf-8 -*-
import requests
import os
# import urllib.request

url = "http://pic.sogou.com/pics?"


def http_page(tag, page):
    par = []
    for x in range(0, 48 * page + 48, 48):
        par.append({"query": tag, "mode": 1, "start": x, "reqType": "ajax", "reqFrom": "result", "tn": 0})
    # url = "http://pic.sogou.com/pics?"
    urls = []
    for i in par:
        urls.append(requests.get(url, params=i).json().get("items"))
    return urls


def get_img(tag, items_list, local_path):
    if not os.path.exists(local_path):   # 新建資料夾
        os.mkdir(local_path)

    x = 0
    for list_url in items_list:
        for i in list_url:
            if i.get("pic_url") != None:
                #try:
                #    urllib.request.urlopen(i.get("pic_url"))
		#except:
                #    continue
                #if requests.get(i.get("pic_url")).status_code != 200:
                #    print("錯誤連結:"+i.get('pic_url'))
                #    continue
                print('%d正在下載:%s' % (x, i.get('pic_url')))
                irg = requests.get(i.get("pic_url"))
                with open(local_path + tag +'%d.jpg' % x, 'wb') as file:
                    file.write(irg.content)
                x += 1
            else:
                print("圖片連線不存在")


dataList = http_page("動物", 2)
get_img(dataList, 'e:/pythonSpiderFile/img18/')
最開始學習Python會遇到各種各樣的問題,今天遇到了一個11004錯誤,查了很多資料一直搞不清楚要到底怎麼處理,最後自己動手
,用谷歌的工具查詢了半天才發現原來的連線不存在,所有我在連結之前進行了判斷,如果頁面不存在(if requests.ge
t(i.get("pic_url")).status_code !=200: continue)則跳過這個連線繼續進行下一次,這時候新的問題出來了,那就是Failed to
 establish a new connection: [Errno 11004] getaddrinfo failed' 這個問題也在網上查了兩個小時還是未能找到解決辦法,最、
後想到了try except,於是試了requests與urllib 這兩個庫,最後在urllib這裡找到了解決辦法,但是具體原因摸的不是很清楚,
所以這裡就不記錄了,以上程式碼在Python3.6.2環境中執行,去掉程式碼中的註釋就可以爬取對應圖片到貝蒂儲存,這只是菜鳥學習
爬蟲的時候遇到的一點小問題,做個小小的記錄。歡迎大神指點批評。

相關文章