Я пытаюсь получить около 500 URL-адресов из Раздел новостей Aljazeera , но есть кнопка «Показать больше», которую нужно нажать, чтобы загрузить больше URL-адресов.
Итак, мой вопрос в том, как мы можем получить около 500 URL-адресов, динамически загружая больше URL-адресов с помощью scrapy. Я пробовал один метод, в котором я проверяю раздел сети и вижу, какой URL-адрес запрашивается при нажатии кнопки «Показать больше», а именно:
https://www.aljazeera.com/portal/handlers/HTMLParser.ashx?cmd=ajax&cmdtext=D2AEAD90362EBA2D588998BF152C2F79DD26DD0D31E21DA70A3CFEE7740AAE94D00F5DDC3D2ACA9000ECE8E27805D90958376CCB0BA2DAD4EB1E8C0843F0138C61A7EAC6B632D9A4BF445D038A1D6BA659088252C6873F8DE1D5A4BAF8A7675695BBC6CCA28A12E106043AA97B9AF6F5E165A0A2C8CCF71C3DD8C512667E1F7B&pageid=161023134902510
Это - это ответ
Он возвращает блоки div, содержащие новые URL-адреса и кнопку «показать больше» с измененным cmdtext, и я выяснил, что только cmdtext изменяется, когда мы хотим снова нажать кнопку «Show More»
Итак, я получаю cmdtext «Показать больше кнопки», используя код ниже:
cmdtext = response.css('#btn_showmore_b1_418::attr(cmdtext)').extract_first()
Но когда я пытаюсь запросить URL-адрес, используя код ниже:
yield scrapy.Request(url='https://www.aljazeera.com/portal/handlers/HTMLParser.ashx?cmd=ajax&cmdtext=%s&pageid=161023134902510' % cmdtext)
Я не получение любого ответа
Вот мой код
import scrapy
class ArticlesSpider(scrapy.Spider):
name = 'articles'
start_urls = ['https://www.aljazeera.com/news/']
download_delay = 3
urls_list = []
def parse(self, response):
print(response.body)
urls = response.css('div.col-sm-7.topics-sec-item-cont a:nth-child(2)::attr(href)').extract()
self.urls_list.append([url for url in urls])
print(self.urls_list)
cmdtext = response.css('#btn_showmore_b1_418::attr(cmdtext)').extract_first()
request = scrapy.Request(url='https://www.aljazeera.com/portal/handlers/HTMLParser.ashx?cmd=ajax&cmdtext=%s&pageid=161023134902510' % cmdtext, method='POST')
yield request
Любая помощь будет принята с благодарностью. Спасибо!