有。我想抓一个网站。一切都很好,问题是我无法弄清楚如何刮掉ajax的内容。我正在抓取的网站使用ajax内容来使用Post请求获取评论页面。这是chrome dev工具所说的。
我研究了很多,但我无法理解如何刮取ajax内容。我知道表单数据和发布或获取请求,但我不能使用它们。而且,我不知道如何刮掉我需要的内容。我想它不能使用XPath或选择器进行删除。此外,如果您检查URL,在查看部分中有更多按钮,是否可以使用与ajax内容相同的策略来删除它。
我能够抓第一页,但我被困在next_page。这就是蜘蛛终止的方式,它获取下一页的URL,请求但没有任何反应。 Output log of spider 这是代码......
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())