gpt4 book ai didi

python - 如何使用Scrapy爬取有分页的网站?

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:24 24 4
gpt4 key购买 nike

我正在尝试抓取具有分页的网站。如果我单击页面底部的“下一步”按钮,将生成新项目。我的 scrapy 程序无法获取动态数据。有什么办法可以获取这些数据吗?

下一个按钮的 HTML 如下所示

<div id="morePaginationID">

<a href="javascript:void(0);" onclick="lazyPagingNew('db')"></a>

我的蜘蛛是

class ExampleSpider(CrawlSpider):

name = "example"
domain_name = "example.com"
allowed_domains = ["example.com"]
start_urls = ["http://example.com/beauty/90?utm_source=viewallbea"]
rules = ( Rule(SgmlLinkExtractor(allow=('.*',),restrict_xpaths=('//div[@id="morePaginationID"]',)), callback = "parse_zero" , follow= True), )
def parse_zero(self,response):
hxs = HtmlXPathSelector(response)
paths = hxs.select('//div[@id="containerDiv"]/div[@id="loadFilterResults"]/ul[@id="categoryPageListing"]/li')
m = len(paths)
for i in range(m):

item = ExampleItem()

item["dealUrl"] = paths[i].select("figure/figcaption/a/@href").extract()[0]

url = str(item["Url"])
yield Request(url, callback=self.parselevelone, meta={"item":item})
spider = ExampleSpider()
def parselevelone(self, response):
hxs = HtmlXPathSelector(response)
item = response.meta["item"]
item["Title2"] = hxs.select('//div[@class="fullDetail"]/div/figure/figcaption/h2/text()').extract()[0]
items.append(item)
return item

最佳答案

你需要做的是:

1) 打开火狐

2) 运行 FireBug 控制台

3) 转到搜索结果页面

4) 由于结果是动态变化的并且不会转到另一个页面,Javascript 代码正在为下一页结果调用另一个 URL(API)

5) 查看这个 url 的 Firebug 控制台

6) 您需要将 Scrapy 设置为调用 Javascript 函数正在调用的同一 URL。它很可能会返回 JSON 或 XML 格式的结果数组,这在 Python 中很容易操作

7) 很可能它会有一个“pageNo”变量。所以遍历页码并获取结果!

关于python - 如何使用Scrapy爬取有分页的网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com