在Scrapy Spider中使用PuppeterManaged浏览器的库
scrapy-puppeteer-client的Python项目详细描述
皮屑傀儡客户
此软件包旨在使用Puppeteer从Scrapy蜘蛛管理Chrome浏览器。 这样就可以对那些需要JS才能正常工作的站点进行抓取,并使其更像人类。 它是scrapy-puppeteer-service的客户端库。在
在⚠️ 此存储库正在开发中
这个项目正在开发中。使用它的风险由你自己承担。在
安装
使用pip(主分支):
$ pip install scrapy-puppeteer-client
配置
你应该开始scrapy-puppeteer-service。 {1>并启用下载器的URL}然后添加pupper:
^{pr2}$基本用途
使用scrapypuppeteer.PuppeteerRequest
代替scrapy.Request
使用puppeter呈现URL:
importscrapyfromscrapypuppeteerimportPuppeteerRequestclassMySpider(scrapy.Spider):...defstart_requests(self):yieldPuppeteerRequest('https://exapmle.com',callback=self.parse)defparse(self,response):links=response.css(...)...
高级用法
PuppeteerRequest
的第一个参数是浏览器操作。
可用操作在scrapypuppeteer.actions
模块中定义为PuppeteerServiceAction
的子类。
向请求传递URL是GoTo(url)
操作的快捷方式。在
以下是可用操作的列表:
GoTo(url, options)
-导航到URLGoForward(options)
-在历史中向前导航GoBack(options)
-返回历史Click(selector, click_options, wait_options)
-单击页面上的元素Scroll(selector, wait_options)
-滚动页面Screenshot(options)
-截图CustomJsAction(js_function)
-在第页计算JS函数
可用选项本质上是镜像service方法参数,而这些参数又在一定程度上镜像了puppeter API函数。
有关详细信息,请参见scrapypuppeteer.actions
模块。在
您可以将close_page=False
选项传递给请求,以便在请求完成后保留浏览器选项卡及其状态。
然后使用response.follow
继续与同一选项卡交互:
importscrapyfromscrapypuppeteerimportPuppeteerRequestfromscrapypuppeteer.actionsimportClickclassMySpider(scrapy.Spider):...defstart_requests(self):yieldPuppeteerRequest('https://exapmle.com',close_page=False,callback=self.parse)defparse(self,response):...# parse and yield some items...next_page_selector='button.next-page-or-smth'ifresponse.css(next_page_selector):yieldresponse.follow(Click(next_page_selector,wait_options={'selectorOrTimeout':3000}),# wait 3 secondsclose_page=False,callback=self.parse)
在您的第一个请求服务将创建新的匿名浏览器上下文和新页面。
它们的id将作为context_id
和page_id
属性在响应对象中返回。
遵循这样的响应意味着将上下文和页面ID传递给下一个请求。
您还可以直接指定请求上下文和页面id。在
一旦您的spider关闭,中间件将负责关闭所有使用的浏览器上下文。在
托多
- [x] 可以处理goto、click、scroll和actions的骨架
- []标头和Cookie管理
- []对puppeter的代理支持
- []请求的错误处理
- []har支持
- 项目
标签: