使用 Scrapy 进行分页 - 使用Python进行网页抓取
使用 Scrapy 进行分页。网页抓取是一种从网站获取信息的技术。Scrapy 用作网页抓取的Python框架。从普通网站获取数据比较容易,只需拉取网站的HTMl,通过过滤标签获取数据即可。但是,如果您尝试获取的数据中存在分页,例如 – 亚马逊的产品可以有多个页面并成功地废弃所有产品,则需要分页的概念。
分页:分页,也称为分页,是将文档划分为离散页面的过程,这意味着不同页面上的数据捆绑。这些不同的页面有自己的 url。所以我们需要把这些url一个一个地抓取下来。但要记住的是何时停止分页。通常页面有下一个按钮,这个下一个按钮是可以的,当页面完成时它会被禁用。此方法用于获取页面的 url,直到下一个页面按钮可用,当它被禁用时,没有页面可供抓取。
使用scrapy应用分页的项目
从亚马逊网站抓取移动细节并在以下项目中应用分页。
抓取的详细信息涉及手机的名称和价格以及分页以抓取以下搜索 url 的所有结果
分页背后的逻辑:
此处 next_page 变量仅在下一页可用时获取下一页的 url,但如果没有剩余页面,则此 if 条件为 false。
此处 next_page 变量仅在下一页可用时获取下一页的 url,但如果没有剩余页面,则此 if 条件为 false。
next_page = response.xpath("//div/div/ul/li[@class='alast']/a/@href").get()
if next_page:
abs_url = f"https://www.amazon.in{next_page}"
yield scrapy.Request(
url=abs_url,
callback=self.parse
)
笔记:
abs_url = f"https://www.amazon.in{next_page}"
这里需要取 https://www.amazon.in 是因为 next_page 是 /page2。这是不完整的,完整的网址是 https://www.amazon.in/page2
- 获取细节的 xpath 需要被抓取 –
按照以下步骤获取 xpath –
项目的xpath:名称的xpath:
价格的xpath:
下一页的xpath:
- 蜘蛛代码:从亚马逊网站抓取名称和价格,并在下面的代码中应用分页。
import scrapy class MobilesSpider(scrapy.Spider): name = 'mobiles' # create request object initially def start_requests(self): yield scrapy.Request( url ='https://www.amazon.in / s?k = xiome + mobile + phone&crid'\ + '= 2AT2IRC7IKO1K&sprefix = xiome % 2Caps % 2C302&ref = nb_sb_ss_i_1_5', callback = self.parse ) # parse products def parse(self, response): products = response.xpath("//div[@class ='s-include-content-margin s-border-bottom s-latency-cf-section']") for product in products: yield { 'name': product.xpath(".//span[@class ='a-size-medium a-color-base a-text-normal']/text()").get(), 'price': product.xpath(".//span[@class ='a-price-whole']/text()").get() } print() print("Next page") print() next_page = response.xpath("//div / div / ul / li[@class ='a-last']/a/@href").get() if next_page: abs_url = f"https://www.amazon.in{next_page}" yield scrapy.Request( url = abs_url, callback = self.parse ) else: print() print('No Page Left') print()
抓取结果:
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。