Я пытаюсь очистить цены от любого заданного URL. Я использую CsQuery и для жизни, я не могу найти лучший способ найти все элементы на странице, которая может быть ценой. Бонус будет определять наиболее вероятную цену по размеру/цвету теста и насколько он близок к началу страницы. Я думал, возможно, глядя на решение Regex, но я не уверен, что это правильный способ пойти с CsQuery.CsQuery: Поиск цен на странице
ответ
Ну, если знак валюты присутствует, вы можете сделать что-то вроде.
(?:\$|\£)(\d+(?!\d*,\d)|\d{1,3}((, ?)\d{3}?)?(\3\d{3}?){0,4})(\.\d{1,2})?(?=[^\d,]|, (?!\d{3,})|$)
(?:\$|\£) -- matches literal currency simbols. You can remove this
if you can't count on the presence of currency symbols,
but it's a great anchor if you can
(\d+ -- matches any number of digits
(?!\d*,\d) as long as not followed by comma digit
|
\d{1,3} -- otherwise matches betweein 1 and 3 digits
(
(, ?) -- looks for a comma followed by a possible space
captures as \3
\d{3}?) -- followed by 3 digits
? -- zero or one times
(\3 -- looks for the same pattern of comma with or without space
\d{3}? -- followed by 3 digits
){0,4}) -- between 0 and 4 times, more on that below
(\. -- literal period
\d{1,2} -- followed by one or two digits
)? -- zero or one times (so, optional)
(?=[^\d,]|, (?!\d{3,})|$)
Другой вещь, которую вы могли бы сделать, чтобы ограничить количество повторений разделителей групп может быть, это может помочь отсеять высокие цифры, которые не являются вероятными ценами. Если вы не ожидаете чего-либо более 999,999, вы можете это сделать (но если вы имеете дело с иностранной валютой, инфляция сделала несколько астрономически высоких - буханка хлеба в Зимбабве стоит пятьдесят миллионов).
Для удобства чтения, я покажу вам, как ограничить количество повторений до 7
Измените 4 (в целом регулярное выражение единственными 4) до 6, (числа, которое хочет -1, потому что мы ищите 1 заранее, чтобы установить шаблон запятой).
(?:\$|\£)(\d+(?!\d*,\d)|\d{1,3}((, ?)\d{3}?)?(\3\d{3}?){0,6})(\.\d{1,2})?(?=[^\d,]|, (?!\d{3,})|$)
Вы можете увидеть это в действии на: https://regex101.com/r/oU2nW2/1
- 1. Поиск цен в Lucene
- 2. CSQuery итерация
- 3. Поиск на веб-странице
- 4. Поиск процентного изменения цен между строками
- 5. Показать диапазон цен на домашней странице в Magento
- 6. Как добавить пользовательский текст перед покупкой цен на странице корзины?
- 7. Перезагрузка цен на странице продукта при выборе продукта
- 8. Поиск цен в базе данных PHP MySQL
- 9. Исключение псевдоселектора CsQuery
- 10. CsQuery заменить теги
- 11. CsQuery: получить потомки DomElement
- 12. Использование селекторов с csQuery
- 13. CSQuery Анализ неанглийского текста
- 14. CsQuery Удалить не работает
- 15. $ (this) эквивалент в CsQuery
- 16. CsQuery удалить комментарии
- 17. CsQuery добавить к
- 18. Поиск основного текста на странице
- 19. Wordpress поиск на главной странице
- 20. Поиск URL-адреса на странице
- 21. JQuery поиск на странице load
- 22. Поиск на странице с javascript
- 23. поиск JQuery на другой странице
- 24. WordPress Поиск на pluign странице
- 25. Поиск товаров на первой странице
- 26. поиск на веб-странице..Android
- 27. Поиск по Javascript на странице
- 28. Поиск keyworkd на веб-странице
- 29. Поиск элемента внизу на странице
- 30. Поиск цвета на странице flex
Спасибо, я думаю, что у меня есть регулярное выражение, которое будет тянуть цены, но я не могу показаться, чтобы получить CSQuery искать весь текст и посмотреть, если регулярное выражение Матчи. Кто-нибудь имеет пример CsQuery? Я также не уверен, что regex - лучший метод для CSQuery или если что-то более эффективное существовало. – mrfleck