方法的Ruby条件参数

方法的Ruby条件参数,ruby,web-scraping,nokogiri,conditional-attribute,Ruby,Web Scraping,Nokogiri,Conditional Attribute,我有一些基于css选择器提取数据的“通用”方法,这些方法在许多网站中通常是相同的。然而,我有另一种方法,它接受给定网站的css选择器作为参数 如果传递了title\u选择器参数,我需要调用get\u title方法。我该怎么做 接受css选择器作为参数的Scrape 在页面.css调用中使用或操作符。如果title\u选择器为false(nil),它将调用get\u title 不过,我不确定在这种情况下,doc应该是什么 编辑 根据下面的评论,我认为您可以重构get_title来处理所有逻辑。

我有一些基于css选择器提取数据的“通用”方法,这些方法在许多网站中通常是相同的。然而,我有另一种方法,它接受给定网站的css选择器作为参数

如果传递了title\u选择器参数,我需要调用get\u title方法。我该怎么做

接受css选择器作为参数的Scrape
页面.css调用中使用
操作符。如果
title\u选择器
为false(nil),它将调用
get\u title

不过,我不确定在这种情况下,
doc
应该是什么

编辑

根据下面的评论,我认为您可以重构
get_title
来处理所有逻辑。允许
get_title
获取可选的
title_选择器
参数,并将此行添加到方法顶部:

return doc.css(title_selector).text if title_selector
然后,我的原始行变成:

:title => get_title(page, title_selector)

页面.css调用中使用
操作符。如果
title\u选择器
为false(nil),它将调用
get\u title

不过,我不确定在这种情况下,
doc
应该是什么

编辑

根据下面的评论,我认为您可以重构
get_title
来处理所有逻辑。允许
get_title
获取可选的
title_选择器
参数,并将此行添加到方法顶部:

return doc.css(title_selector).text if title_selector
然后,我的原始行变成:

:title => get_title(page, title_selector)

小心点
.text
只对其中一个调用,一个是
css
,另一个是
at_css
。嗯,我想我没有解释清楚。page.css()中的参数是一个css选择器,类似于“#title>.title class>h1”。因此,在这个文件中获取标题(doc)是不起作用的,因为获取标题返回的是一个略过的标题页('Amazon.com…),而不是一个.css选择器。FYI doc=Nokogiri格式的完整html源代码。啊,你的解释很好。我的阅读理解力不足。我想我的编辑现在应该涵盖它了。谢谢。你的解决方案很完美,小心点
.text
只对其中一个调用,一个是
css
,另一个是
at_css
。嗯,我想我没有解释清楚。page.css()中的参数是一个css选择器,类似于“#title>.title class>h1”。因此,在这个文件中获取标题(doc)是不起作用的,因为获取标题返回的是一个略过的标题页('Amazon.com…),而不是一个.css选择器。FYI doc=Nokogiri格式的完整html源代码。啊,你的解释很好。我的阅读理解力不足。我想我的编辑现在应该涵盖它了。谢谢。你的解决方案是完美的。
:title => get_title(page, title_selector)