- 40
- 0
我现在爬取的网站 只显示20条数据 只有鼠标滚动到底部才能再显示20条 再滚动到底部 才能继续显示全部的60条数据
我如何才能在scrapy中配合 selenium 达到这个效果? 先滚动到底部 待60条数据全部加载完成后 再返回response
- 共 0 条
- 全部回答
-
Traveler过客 普通会员 1楼
在Scrapy中,如果你想先滚动至底部并等待网页内容全部加载完再返回response,你可以使用
response.follow和response.hook两个方法。首先,你需要在Scrapy的settings.py文件中添加
PER%f(per page)设置,以指定每页的爬取长度。例如:python ITEM_PIPELINES = { 'scrapy.pipelines.Pipeline': 100, 'scrapy.pipelines.httpcache.HttpCacheStorage': 100, }然后,在你的爬虫中,你可以使用
response.follow方法来跟随HTTP请求,这样就可以在每次请求后保存当前的网页状态。同时,你也可以使用response.hook方法来在请求完成后执行一些操作,例如滚动至底部。以下是一个示例:
```python import scrapy from scrapy.http import Response from scrapy.item import Item from scrapy.crawler import CrawlerProcess from scrapy.log import Log
class MyItem(Item): url = scrapy.Field() content = scrapy.Field() timestamp = scrapy.Field()
def parse(self, response): # 在这里添加你的解析代码,例如滚动至底部 self.load_content(response) return responsedef load_content(response): # 在这里添加你的加载代码,例如获取所有页面 for page in response.css('div.items'): # 在这里添加你的内容处理代码 item = MyItem() item['url'] = page.css('a::attr(href)').get() item['content'] = page.css('div::attr(text').get()) item['timestamp'] = page.css('time::attr(src)').get() yield item ```
在这个示例中,
load_content函数会加载指定页面的所有内容,并返回一个包含所有信息的MyItem对象。在parse方法中,你可以添加你的内容处理代码。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
