Python 如何从所有页面获取数据?
这是我第一次在python中使用Scrapy框架 所以我做了这个代码Python 如何从所有页面获取数据?,python,scrapy,frameworks,Python,Scrapy,Frameworks,这是我第一次在python中使用Scrapy框架 所以我做了这个代码 # -*- coding: utf-8 -*- import scrapy class SpiderSpider(scrapy.Spider): name = 'spider' start_urls = [ 'https://www.emag.ro/televizoare/c' ] def parse(self, response): for i in re
# -*- coding: utf-8 -*-
import scrapy
class SpiderSpider(scrapy.Spider):
name = 'spider'
start_urls = [
'https://www.emag.ro/televizoare/c'
]
def parse(self, response):
for i in response.xpath('//div[@class="card-section-wrapper js-section-wrapper"]'):
yield {
'product-name': i.xpath('.//a[@class="product-title js-product-url"]/text()')
.extract_first().replace('\n','')
}
next_page_url = response.xpath('//a[@class="js-change-page"]/@href').extract_first()
if next_page_url is not None:
yield scrapy.Request(response.urljoin(next_page_url))
当我在网站上看到它有超过800种产品。但我的脚本只占用了前2页近200个产品
我尝试使用css选择器和xpath,两者都是相同的错误
有人能找出问题出在哪里吗
谢谢大家! 您尝试爬网的网站正在从API获取数据。当您单击分页链接时,它会向API发送ajax请求,以获取更多产品并在页面上显示它们 自 Scrapy不模拟浏览器环境本身 所以一种方法就是你
此外,您还需要从API获得的json响应中提取下一页。通常有一个名为pagination的键,其中包含与总页面、下一页等相关的信息。我终于想出了如何做
# -*- coding: utf-8 -*-
import scrapy
from ..items import ScraperItem
class SpiderSpider(scrapy.Spider):
name = 'spider'
page_number = 2
start_urls = [
'https://www.emag.ro/televizoare/c'
]
def parse(self, response):
items = ScraperItem()
for i in response.xpath('//div[@class="card-section-wrapper js-section-wrapper"]'):
product_name = i.xpath('.//a[@class="product-title js-product-url"]/text()').extract_first().replace('\n ','').replace('\n ','')
items["product_name"] = product_name
yield items
next_page = 'https://www.emag.ro/televizoare/p' + str(SpiderSpider.page_number) + '/c'
if SpiderSpider.page_number <= 28:
SpiderSpider.page_number += 1
yield response.follow(next_page, callback = self.parse)
#-*-编码:utf-8-*-
进口羊瘙痒
从..项导入ScraperItem
蜘蛛蛛类蜘蛛(刮毛蜘蛛):
名称='spider'
页码=2
起始URL=[
'https://www.emag.ro/televizoare/c'
]
def解析(自我,响应):
items=ScraperItem()
对于响应中的i.xpath('//div[@class=“card section wrapper js section wrapper”]'):
product_name=i.xpath('.//a[@class=“product title js product url”]/text()).extract_first().replace('\n','').replace('\n','')
项目[“产品名称”]=产品名称
收益项目
下一页https://www.emag.ro/televizoare/p“+str(蜘蛛蛛.页码)+”/c”
if SpiderSpider.page_编号