2017-12-17 4 views
1

Neu in der ProgrammierungScrapy, kann keine Seite crawlen: "Zeitüberschreitung der TCP-Verbindung: 110: Zeitüberschreitung der Verbindung."

Inhalt kann nicht von einer Domäne gescannt werden, die zur selben Website gehört.

Zum Beispiel kann ich it.example.com, es.example.com, pt.example.com kratzen, aber wenn ich versuche, das gleiche mit fr.example.com oder us.example.com zu tun, bekomme ich :

2017-12-17 14:20:27 [scrapy.extensions.telnet] DEBUG: Telnet console 
listening on 127.0.0.1:6025 
2017-12-17 14:21:27 [scrapy.extensions.logstats] INFO: Crawled 0 pages 
(at 
0 pages/min), scraped 0 items (at 0 items/min) 
2017-12-17 14:22:27 [scrapy.extensions.logstats] INFO: Crawled 0 pages 
(at 
0 pages/min), scraped 0 items (at 0 items/min) 
2017-12-17 14:22:38 [scrapy.downloadermiddlewares.retry] DEBUG: 
Retrying 
<GET https://fr.example.com/robots.txt> (failed 1 times): TCP 
connection 
timed out: 110: Connection timed out. 

Hier ist die Spinne some.py

import scrapy 
import itertools 

class SomeSpider(scrapy.Spider): 
    name = 'some' 
    allowed_domains = ['https://fr.example.com'] 
    def start_requests(self): 
    categories = [ 'thing1', 'thing2', 'thing3',] 
      base = "https://fr.example.com/things?t={category}&p={index}" 

    for category, index in itertools.product(categories, range(1, 11)): 
     yield scrapy.Request(base.format(category=category, index=index)) 

def parse(self, response): 
    response.selector.remove_namespaces() 
    info1 = response.css("span.info1").extract() 
    info2 = response.css("span.info2").extract() 

    for item in zip(info1, info2): 
     scraped_info = { 
      'info1': item[0], 
      'info2': item[1] 
      } 

     yield scraped_info 

Was ich versucht habe:

  1. Führen Sie die Spinne aus einem anderen IP (gleiches Problem mit den gleichen Domänen)

  2. einen Pool von IP-Adressen hinzufügen (funktionierte nicht)

  3. irgendwo Gefunden auf Stackoverflow: in setting.py, Set

    USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537,36 (KHTML, wie Gecko) Chrom/55.0.2883.95 Safari/537,36'

  4. ROBOTSTXT_OBEY = False

Jede Idee ist willkommen!

+0

haben Sie diese URL im Browser heute überprüft? vielleicht Server hat heute ein Problem und es funktioniert nicht. – furas

+0

Zuerst Browser einchecken und dann scrapy sehen. Einige Sites erfordern spezifische Länder-IPs –

+0

Die Website ist online und ich kann von meinem aktuellen Standort aus problemlos darauf zugreifen – Rawhide

Antwort

0

Versuchen Sie, auf die Seite mit dem requests-Paket statt scrapy zuzugreifen, und sehen Sie, ob es funktioniert.

import requests 

url = 'fr.example.com' 

response = requests.get(url) 
print(response.text) 
+0

Es funktionierte wie ein Zauber. Was muss ich in meinem Skript ändern, damit die Informationen, die ich brauche, gelöscht werden? – Rawhide

+0

BEARBEITEN: Aus irgendeinem Grund, das gleiche _base = "https://fr.example.com/things?t={category}&p={index}"_ das für andere Domänen funktionierte, nicht für FR und US. Ich habe gerade www hinzugefügt. zu fr.example.com und es hat funktioniert. Mit _base = "https://www.fr.example.com/things?t={category}&p={index}"_ funktioniert das. Keine Ahnung warum. – Rawhide

+0

@Rawhide froh, dass meine Antwort noch nützlich war. – laguittemh

Verwandte Themen