0
process_links
関数からレスポンス(条件としてのURL)にアクセスしようとしていますので、URLを書き換えることができます。これを行う方法はありますか?現在、私はエラーを取得:process_links()あなたは、あなたの関数で応答を受け取ることを期待Scrapでprocess_links関数から応答URLを取得する方法はありますか?
def process_links(self, links):
に(与えられた2)
class Spider(CrawlSpider):
name = 'spider_1'
allowed_domains = 'domain.com',
start_urls = (
'http://domain.com/new/1.html?content=image',
'http://domain.com/new/1.html?content=video',
)
rules = [
Rule(LinkExtractor(allow =(), restrict_xpaths=('//div[@class="pagination"]')), callback='parse_page', process_links='process_links', follow=True)
]
def process_links(self, links, resp):
for link in links:
if 'content=photo' in resp.url:
link.url = "%s?content=photo" % link.url
else:
link.url = "%s?content=video" % link.url
return links
問題がページから抽出したリンクのどれもが、私はそれを追加しようとしている理由です、 'コンテンツ= *'を含んでいないということです。私は応答URL(以前に書き換えられたURL)からそれを検出しようとしています。治療法がprocess_linksへの応答を渡す方法はないようです。私は運がないかもしれない。 – user2980769
LinkExtractorのように見えますが、このシナリオでは機能しませんが、コンセプトは理にかなっています。 'AttributeError: 'LxmlLinkExtractor'オブジェクトに 'extract''12属性がありません。 – user2980769
申し訳ありませんが、私のせいです。 'extract_links'でなければなりません。 – Djunzu