Ошибка сегментации в hpricot - PullRequest
2 голосов
/ 31 мая 2009

Я использую hpricot для чтения HTML. Я получил ошибку ошибки сегментации, я погуглил, и некоторые говорят, что обновляют до последней версии Ruby. Я использую рельсы 2.3.2 и ruby ​​1.8.7. Как устранить эту ошибку?

Ответы [ 7 ]

5 голосов
/ 03 сентября 2009

Я пытался разобрать html-страницы, содержащие много символов юникода, и Hpricot продолжал падать. Наконец, я использовал патч обезьяны из sanitize и поместил его в environment.rb для моего приложения rails. С тех пор, как я добавил этот патч, не было ни одного сбоя:

http://github.com/rgrove/sanitize/blob/1e1dc9681de99e32dc166f591343dfa60fc1f648/lib/sanitize/monkeypatch/hpricot.rb

4 голосов
/ 25 июля 2009

Если вы можете свободно выбирать свою библиотеку для разбора HTML, переключите ее. Почему, создатель Hpricot, недавно написал, что лучше использовать Nokogiri вместо HPricot, в настоящее время.

Вы также можете взглянуть на HTTParty.

2 голосов
/ 13 мая 2011

На ruby ​​1.8.5 попробуйте использовать hpricot -v 0.6.161

Это сработало для меня.

1 голос
/ 26 августа 2009

По памяти, с тех пор, как я последний раз пользовался им около года назад:

Hpricot хранит атрибуты в буфере фиксированного размера, а некоторые платформы генерируют невероятно длинные хеши в атрибутах документа. Перед синтаксическим анализом можно установить статическое поле, позволяющее установить размер этого буфера.

Я помню, что он был довольно заметным в документах на веб-странице, хотя, конечно, его уже нет.

0 голосов
/ 26 августа 2009

У меня та же проблема с segfault, но, к сожалению, я не могу справиться с проблемами, упомянутыми Дейвом, упомянутыми выше, даже через кеш Google - из того, что я гуглюл, segfaults parse.rb связано с закодированными сущностями или символом alt наборы (возможно с акцентированными символами)

Библиотека sanitize обнаружила ту же проблему и разместила здесь обезьян-патч: http://github.com/rgrove/sanitize/blob/1e1dc9681de99e32dc166f591343dfa60fc1f648/lib/sanitize/monkeypatch/hpricot.rb

0 голосов
/ 20 июня 2009

Похоже, что это нерешенная проблема в списке ошибок. Я испытал это к. Моя теория связана со структурой HTML или плохим / поврежденным символом в файле, но я не нашел, где именно.

Вот ссылки на вопросы:

0 голосов
/ 31 мая 2009

Ну, основываясь на вашем собственном вопросе, я бы сказал: «Обновить до последней версии Ruby». Тем не менее, у меня также были проблемы с segfaulting hpricot, которые, похоже, были связаны с моим использованием потоков.

...