我有一個簡單的腳本,從亞馬遜刮取數據,你都知道有一個驗證碼,所以當captcha到達頁面標題是'機器人檢查',所以我寫邏輯對於這種情況,如果頁面title = 'Robot check'
和打印消息'頁面不被抓取,頁面上有驗證碼',並且不從該頁面獲取數據。否則繼續腳本。重新請求從python scrapy parse()中的URL或URL
但在if部分我試過yield scrapy.Request(response.url, callback=self.parse)
重新請求當前的URL,但我沒有成功。我只需要做的是重新請求response.url
並繼續腳本,因爲這是因爲我認爲我必須做的就是從日誌文件中刪除response.url
,所以scrapy不記得網址爲抓取簡單我必須欺騙scrapy並請求再次相同的URL或可能是如果有方法將response.url
標記爲失敗的網址,以便scrapy自動重新請求。
下面是一個簡單的腳本,start_urls
是在同一個文件夾單獨命名的URL的文件,所以我必須從URL中導入它的文件
import scrapy
import re
from urls import start_urls
class AmazondataSpider(scrapy.Spider):
name = 'amazondata'
allowed_domains = ['https://www.amazon.co.uk']
def start_requests(self):
for x in start_urls:
yield scrapy.Request(x, self.parse)
def parse(self, response):
try:
if 'Robot Check' == str(response.xpath('//title/text()').extract_first().encode('utf-8')):
print '\n\n\n The ROBOT CHeCK Page This link is reopening......\n\n\n'
print 'URL : ',response.url,'\n\n'
yield scrapy.Request(response.url, callback=self.parse)
else:
print '\n\nThere is a data in this page no robot check or captcha\n\n'
pgtitle = response.xpath('//title/text()').extract_first().encode('utf-8')
print '\n\n\nhello', pgtitle,'\n\n\n'
if pgtitle == 'Robot check:
# LOGIC FOR GET DATA BY XPATH on RESPONSE
except Exception as e:
print '\n\n\n\n',e,'\n\n\n\n\n'