Там. Я пытаюсь очистить веб-сайт. Все работает нормально, проблема в том, что я не могу понять, как очистить содержимое ajax. Веб-сайт, который я очищаю, использует содержимое ajax для получения страниц обзора с помощью почтового запроса. Вот что говорит инструмент chrome dev.
Я много исследовал, но не могу понять, как очищать содержимое ajax. Я знаю о данных формы и запросе отправки или получения, но я не могу их использовать. Более того, я не знаю, как парсить нужный мне контент. Я предполагаю, что его нельзя очистить с помощью XPath или селекторов. Кроме того, если вы проверите URL-адрес, в разделе обзора есть кнопка «Читать далее», возможно ли очистить его, используя ту же стратегию, что и для контента ajax.
Мне удалось очистить первую страницу, но я застрял на следующей_странице. вот как паук завершает работу, он получает URL-адрес следующей страницы, запрашивает, но ничего не происходит. Журнал вывода паука Вот код...
import scrapy
from scrapy.http import Request, FormRequest
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
from quo.items import QuoItem
class MySpider(scrapy.Spider):
name = 'quotes'
def start_requests(self):
yield scrapy.Request('https://www.daraz.pk/infinix-s2-pro-32gb-3gb-4g-lte-black-6619437.html', self.parse)
def parse(self, response):
for href in response.xpath('//div[@class="reviews"]'):
item=QuoItem()
Rating=response.xpath('//*[@id="ratingReviews"]/section[3]/div[2]/article/div[2]/div[1]/div/div/@style').extract()
if Rating:
item['Rating']=Rating
ReviewT=response.xpath('//*[@id="ratingReviews"]/section[3]/div[2]/article/div[2]/div[2]/text()').extract()
if ReviewT:
item['ReviewT']=ReviewT
yield item
next_page=response.xpath('(//ul[@class="osh-pagination -horizontal"]/li[@class="item"]/a[@title]/@href)[last()]').extract() #xpath for next button which contains the url.
if next_page:
yield scrapy.Request(response.urljoin(next_page[0]), callback=self.parse)
В комментариях запрошено обновление:
Я пытался его использовать, но, думаю, не очень хорошо. Это ничего не делает. Вот дополнение к коду
next_page=response.xpath('(//ul[@class="osh-pagination -horizontal"]/li[@class="item"]/a[@title]/@href)[last()]').extract()
if next_page:
yield scrapy.Request(response.urljoin(next_page[0]), callback=self.parse_jsonloads)
def parse_jsonloads(self, response):
data=json.loads(response.body)
for item in data.get('reviews', []):
ReviewT=item.get('author')
yield json.loads(response.body_as_unicode())