Я пытаюсь получить доступ к ответу (url как условие) из функции process_links
, поэтому я могу переписать URL-адрес. Есть какой-либо способ сделать это? В настоящее время я получаю ошибку: process_links() занимает ровно 3 аргумента (2 приведены)Любой способ получить ответный url от функции process_links с помощью Scrapy?
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-адреса). Не похоже, что есть какой-либо способ для scrapy передать ответ process_links. Мне может быть не повезло. – user2980769
Похоже, что LinkExtractor не будет работать в этом сценарии, но концепция имеет смысл. 'AttributeError: объект LxmlLinkExtractor 'не имеет атрибута' extract'' – user2980769
Извините, моя ошибка. Это должно быть 'extract_links' – Djunzu