私は、captchaがあると知っているすべてのアマゾンからデータを取り出す単純なスクリプトを持っているので、captchaが到着したときにページタイトルが 'Robot check'この状況では、ページtitle = 'Robot check'
とメッセージ「ページがスクラップされない」が表示され、このページからデータが取得されない場合。そうでなければスクリプトを続行しますPythonの手作業でparse()のURLまたはURLを手動で要求する
しかし、私はyield scrapy.Request(response.url, callback=self.parse)
の再リクエストで現在のURLを試していますが、成功しませんでした。私はちょうどresponse.url
を再度要求していると私は私がしなければならないと思うのでスクリプトを続行する必要がありますログファイルからresponse.url
を削除するので、傷つきやすいURLを覚えていないので、私は、再度同じURLを入力するか、またはresponse.url
に失敗したURLをマークする方法がある場合は、自動的に再度リクエストします。ここで
は簡単なスクリプトとstart_urls
は、同じフォルダ内のURLという名前の別のファイルに私はのURLからそれをインポートしているされているので、デフォルトScrapyにより、重複したリンクをフィルタリングしないようにするためにScrapyに知らせる
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'