Ich studiere Scrapy-Bibliothek und versuche, einen kleinen Crawler zu machen.Scrapy. Unerwartete Symbole in LinkExtractor
Hier die Regeln des Crawlers:
rules = (
Rule(LinkExtractor(restrict_xpaths='//div[@class="wrapper"]/div[last()]/a[@class="pagenav"][last()]')),
# Rule(LinkExtractor(restrict_xpaths='//span[@class="update_title"]/a'), callback='parse_item'),
)
Aber ich bekomme diese Fehlermeldung:
DEBUG: Crawled (200) <GET http://web/category.php?id=4&> (referer: None)
DEBUG: Crawled (404) <GET http://web/%0D%0Acategory.php?id=4&page=2&s=d> (referer: http://web/category.php?id=4&)
DEBUG: Ignoring response <404 http://web/%0D%0Acategory.php?id=4&page=2&s=d>: HTTP status code is not handled or not allowed
Ist hier, wie html wie folgt aussehen:
<a class="pagenav" href=" category.php?id=4&page=8&s=d& ">8</a>
|
<a class="pagenav" href=" category.php?id=4&page=9&s=d& ">9</a>
|
<a class="pagenav" href=" category.php?id=4&page=10&s=d& ">10</a>
|
<a class="pagenav" href=" category.php?id=4&page=2&s=d& ">Next ></a>
Kann jemand erklären, wo ist das% 0D % 0A kommen von? Mit freundlichen Grüßen, Maxim.
UPD: habe ich eine einfache Funktion
def process_value(value):
value = value.strip()
print value
return value
und geänderte Regeln zu
rules = (
Rule(LinkExtractor(restrict_xpaths='//div[@class="wrapper"]/div[last()]/a[@class="pagenav"][last()]', process_value=process_value)),
# Rule(LinkExtractor(restrict_xpaths='//span[@class="update_title"]/a'), callback='parse_item'),
)
Druckbefehl druckt diese:
Crawled (200) <GET http://web/category.php?id=4&>(referer: None)
http://web/
category.php?id=4&page=2&s=d&
Crawled (404) <GET http://web/%0D%0Acategory.php?%0D=&id=4&page=2&s=d>(referer: http://web/category.php?id=4&)
Können Sie den Code anzeigen, wo Sie das 'href' Tag extrahieren? – Rahul
Meiner Meinung nach müssen Sie zuerst die relative URL entfernen und dann eine Anfrage stellen. Durch das Entfernen werden die Zeichen "Wagenrücklauf-% 0D" und "Zeilenvorschub-% 0A" entfernt. – Rahul
Danke, aber aus irgendeinem Grund .strip() wird nicht funktionieren :( –