Я хочу удалить список сообщений в Facebook. Для этого я делаю логин, а затем загружаю список идентификаторов постов, чтобы запросы регистрировались только один раз.
Однако, когда я пытаюсь использовать yield для выполнения запросов, он не входит в цикл for.
Просто для тестирования я изменяю выход для возврата, и он входит в цикл for и вызывает метод parse.
``` lang-py
class FacebookSpider(scrapy.Spider):
name = "test"
start_urls = ['https://mbasic.facebook.com']
def parse(self, response):
return FormRequest.from_response( response, callback=self.parse_home,
formxpath='//form[contains(@action, "login")]',
formdata={'email': "email@email.com", 'pass': "password"}, )
def parse_home(self, response):
print(">> parse_home")
if response.xpath("//div/input[@value='Ok' and @type='submit']"):
print(">> if condition")
return FormRequest.from_response(response, formdata={'name_action_selected': 'dont_save'}, callback=self.parse_home, dont_filter=True,)
for post in [1,2]:
print(">> for loop")
href = response.urljoin("/335653391129/posts/10157014203171130".format(post))
yield scrapy.Request(url=href, callback=self.parse_page, dont_filter=True,)
def parse_page(self, response):
print("____ parse_page _________")
```
Используя выход, получилось:
>> parse_home
>> if condition
Только изменение доходности для возврата было:
>> parse_home
>> if condition
>> parse_home
>> for loop
____ parse_page _________
Я не понимаю, что происходит.
Заранее спасибо,