Open javaswing opened 4 months ago
各位大佬好,最近在使用feapder这个爬虫框架,框架设计的非常棒。自己由于不是专业的爬虫,在使用过程中有一些问题,自己完成没有思路了。希望得到大佬位的指点!不胜感激
feapder
现在使用了AirSpider浏览器渲染(Playwright)模式,进行抓取两个网站的数据,针对不同的API进行拦截json。 在一个启动的服务,通过接口交互,来触发并以xxxSpider().start()方式调用。
AirSpider
xxxSpider().start()
在执行其中其中一个AirSpider时,通过url_regexes拦截的数据,都是正常且任务执行完成都通过response.close_browser(request)方式关闭了浏览器。 但是再次通过xxxSpider().start()调用第二个网站爬虫时,拦截的接口数据都为None。
url_regexes
response.close_browser(request)
自己尝试定位了问题,发现执行第二网站爬虫时,使用的浏览器实例为第一个爬虫完成后,框架中缓存的(可以理解为第二个爬虫的设置都没有生效)浏览器实例,目前没有找到解决方案,恳请各位大佬指点下!
希望每次执行xxxSpider().start()之后系统都能按设定重新生成一个指定的浏览器实例,不使用框架缓存的实例
https://github.com/javaswing/feapder-demo
浏览器池是单例的,你这个情况 需要两个起不同的进程运行,或者将所有拦截写到 _url_regexes 里。你可以在setting里配置,这样无需每个爬虫都写一遍
各位大佬好,最近在使用
feapder
这个爬虫框架,框架设计的非常棒。自己由于不是专业的爬虫,在使用过程中有一些问题,自己完成没有思路了。希望得到大佬位的指点!不胜感激有如下的需求:
现在使用了
AirSpider
浏览器渲染(Playwright)模式,进行抓取两个网站的数据,针对不同的API进行拦截json。 在一个启动的服务,通过接口交互,来触发并以xxxSpider().start()
方式调用。问题
在执行其中其中一个
AirSpider
时,通过url_regexes
拦截的数据,都是正常且任务执行完成都通过response.close_browser(request)
方式关闭了浏览器。 但是再次通过xxxSpider().start()
调用第二个网站爬虫时,拦截的接口数据都为None。自己尝试定位了问题,发现执行第二网站爬虫时,使用的浏览器实例为第一个爬虫完成后,框架中缓存的(可以理解为第二个爬虫的设置都没有生效)浏览器实例,目前没有找到解决方案,恳请各位大佬指点下!
期望
希望每次执行
xxxSpider().start()
之后系统都能按设定重新生成一个指定的浏览器实例,不使用框架缓存的实例复现代码仓库
https://github.com/javaswing/feapder-demo