2015-01-03 62 views
1

我有抓取網站的腳本。 直到今天它運行完美, 但它現在不這樣做。Python請求錯誤10060

它給中小企業以下錯誤:

Connection Aborted Error(10060 ' A connection attempt failed becvause the connected party did not properly respond after a period of time, or established a connection failed because connected host has failed to respond' 

我一直在尋找到答案,ANS設置,但我無法弄清楚如何解決這一問題?

在IE中我沒有使用任何代理(連接 - >蘭設置 - >代理=禁用)

它打破在這一段代碼,somethimes第一次運行,somethimes的第二..等

def geturls(functionurl, runtime): 
startCrawl = requests.get(functionurl, headers=headers) 
mainHtml = BeautifulSoup(startCrawl.content, 'html.parser') 
mainItems = mainHtml.find("div",{"id": "js_multiselect_results"}) 
for tag in mainItems.findAll('a', href=True): 
    tag['href'] = urlparse.urljoin(url,tag['href']) 
    if shorturl in tag['href'] and tag['href'] not in visited: 
     if any(x in tag['href'] for x in keepout): 
      falseurls.append(tag['href']) 
     elif tag['href'] in urls: 
      doubleurls.append(tag['href']) 
     else: 
      urlfile.write(tag['href'] + "\n") 
      urls.append(tag['href']) 

totalItemsStart = str(mainHtml.find("span",{"id": "sab_header_results_size"})) 
if runtime == 1: 
    totalnumberofitems[0] = totalItemsStart 
    totalnumberofitems[0] = strip_tags(totalnumberofitems[0]) 
return totalnumberofitems 

我該如何解決這個問題?

+1

您的腳本可能被阻止,因爲它很明顯是一個刮板。 –

+0

這是如何顯而易見的?我每5秒請求一次頁面。我使用標題讓網站認爲我是一個用戶 – brian

+0

我並不是很粗魯,對不起。但是,您的所有請求都將來自一個IP地址,每5秒鐘一次。如果有人正在觀看服務器日誌或者運行了原始監控軟件,那麼您將會明顯地脫穎而出,成爲一個異常和刮bot機器人。 –

回答

1

嘗試增加requests.get方法的timeout參數:

requests.get(functionurl, headers=headers, timeout=5) 

但賠率是,你的腳本被封鎖的服務器,以防止報廢嘗試。如果是這種情況,您可以嘗試通過設置適當的標題來僞造一個Web瀏覽器。

{"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 GTB7.1 (.NET CLR 3.5.30729)", "Referer": "http://example.com"} 
+0

我沒有超時參數,但我有標題,(因此標題=標題)。我沒有的是.net和referer參數。 referer是做什麼的? – brian