网页抓取工具 IDE 最佳实践
学习使用网页抓取工具 IDE 的最佳实践,包括优化性能、处理错误、管理重试和编写高效的抓取工具代码。
Missing dead_page
condition.
使用 navigate
指令时,应添加 dead_page
条件以检查是否未找到该页面。这将防止自动重试。 虽然当响应状态为 404 时,我们会自动处理此问题,但在某些情况下,网站可能会使用其他各种状态代码进行响应:
Here are good and bad practices examples (you can navigate between them by clicking on the “不好” “Good” tabs)
尽量减少对浏览器的请求量
一些交互指令,例如点击类型 el_exists el_is_visible wait wait_visible,会向浏览器发出真实请求,因而可能会增加延迟并降低性能。 建议组合选择器,进行单个调用,而非多个调用。
Incorrect usage of rerun_stage()
当网站在页面上进行分页并且需要所有页面的数据时,则应从根页面为每个页面调用 rerun_stage()
,而不是从每个页面调用。这使系统能够并行处理请求并提高抓取工具的速度。
Use close_popup()
to close popups
不要花时间等待弹出窗口的出现。 使用 close_popup('popup_selector', 'close_button_selector')
关闭弹出窗口。弹出窗口可以随时出现,在大多数情况下,在每个交互指令之前添加验证检查是不可取的。
不好
Use wait_for_parser_value()
with tag_response()
在使用 tag_response
指令并需要确保在从页面采集数据之前完成请求时,应使用 wait_for_parser_value()
:
自定义错误消息
尽可能避免使用自定义错误消息。 我们的系统尽最大努力为您提供最准确的错误消息:
网站响应缓慢,超时增加
如果网站无法正常加载,则可能是由于对等连接不良所致。 建议显示错误消息,系统将尝试使用更稳定的对等会话加载页面。
重试机制
抓取工具代码应清晰,仅专注于抓取数据的必要任务。 没有必要白费力气做重复工作。最好强调与代码无关的问题并在系统中报告这些问题。
避免使用 try-catch 块
这有助于开发简洁易读的代码,无需依赖 try-catch
块即可有效地管理潜在的 “空”值 或“未定义”值。
解析器代码:从元素集中获取值
最佳实践代码采用更简洁、更实用的 toArray()
和 map()
方法,而非传统的 each()
循环。 这可增强代码的可读性并保持声明样式。
规范化文本
我们在 cheerio prototype $(selector).text_sane() 中添加了一个自定义函数,它删除了所有不必要的空白字符并将其替换为单个空格。