lenarsaitov / cianparser

Сбор данных с сайта объявлений Циан / The parser of general information from the site cian.ru
https://pypi.org/project/cianparser/
MIT License
131 stars 43 forks source link

Проблемы с количеством объектов в выдаче. #30

Closed Chewingus closed 1 year ago

Chewingus commented 1 year ago

Пробуя анализировать дубликаты в выдаче я делал несколько парсингов с одинаковым запросом но разным количеством страниц. Попробовал 54, 64, 74, 84 страницы в параметре end_page Каждый раз общее количество оъектов росло, на 84 количество стало равным тому, что было при 64. Затем попытки запустить парсинг приводили к выводу начального сообщения и конечного сообщения. Выдача при этом оказывалась пустой. Так продолжалось день (примерно). Затем выдача начала пополняться но только до 5-й страницы (иногда до 4-й). И так уже 3 дня. С чем это может быть связано? Можно ли это как то починить?

lenarsaitov commented 1 year ago

Какая версия была использована?

Под "Затем попытки запустить парсинг приводили к выводу начального сообщения и конечного сообщения" имелось ввиду, что парсер не выдавал ничего?

Под "Затем выдача начала пополняться но только до 5-й страницы (иногда до 4-й)" имеется ввиду, что парсер завершал свою работу на 5 странице (иногда до 4-й), при этом end_page был иным?

Желательно, конечно, иметь логи

lenarsaitov commented 1 year ago

Если же это всё проводилось на 0.4.10, то советую перейти более высокую версию (к примеру, сейчас, 0.4.12, в которой была решена проблема с кодировкой), ибо переход на 0.4.11 подразумевал под собой значительные изменения:

Как раз последний пункт, и покажет актуальность вопроса

Chewingus commented 1 year ago

1) Под "Затем попытки запустить парсинг приводили к выводу начального сообщения и конечного сообщения" имелось ввиду, что парсер не выдавал ничего? - В ячейке тетрадки выводится первое сообщение Preparing to collect information from pages.. The absolute path to the file: ...\cian_parsing_result_sale_1_50_moskva_24_Oct_2023_22_43_44_864563.csv Если сохранение в файл не установлено, то без The absolute path to the file: ...\cian_parsing_result_sale_1_50_moskva_24_Oct_2023_22_43_44_864563.csv А дальше: The collection of information from the pages with list of announcements is completed Между этими сообщениями ничего. Файл так же пустой.

2) Под "Затем выдача начала пополняться но только до 5-й страницы (иногда до 4-й)" имеется ввиду, что парсер завершал свою работу на 5 странице (иногда до 4-й), при этом end_page был иным? Да. end_page=84. 112-140 объектов примерно. Пробовал менять на больше вплоть до 1000. Когда не выдавал ничего было предположение сначала что мой ip все таки заблокировали, но потом через день выдача все таки началась.

Версия 0.4.10. В ближайшее время установлю версию 12 отпишусь о результатах. Насчет логов вот все что есть https://github.com/Chewingus/cian_parser_logs, но это уже версия где выдача с 4-мя страницами

lenarsaitov commented 1 year ago

Ага, хорошо

Постараюсь в ближайшее время изучить данный вопрос

lenarsaitov commented 1 year ago

А вообще, можно обновится сразу до 15 версии

Chewingus commented 1 year ago

Обновился до 15-й. Стало однозначно больше в выдаче объектов. Но почему то закончил на 34 странице при end_page =50. При этом при окончании появилось не понятное сообщение и в некоторых страницах нашлось меньше 28 объектов. Preparing to collect information from pages.. The absolute path to the file: D:_Works_Works_in_CADs_Python\Realty\cian_parsing_result_sale_1_50_moskva_25_Oct_2023_20_05_41_448442.csv

The page from which the collection of information begins: https://cian.ru/cat.php?engine_version=2&p=1&region=1&offer_type=flat&deal_type=sale&room1=1&with_neighbors=0

Collecting information from pages with list of announcements 1 | 1 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 28. Progress ratio: 2 %. Average price: 55 119 052 rub 2 | 2 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 56. Progress ratio: 4 %. Average price: 48 659 450 rub 3 | 3 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 84. Progress ratio: 6 %. Average price: 38 331 310 rub 4 | 4 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 112. Progress ratio: 8 %. Average price: 33 968 448 rub 5 | 5 page with list: [=>=>=>=>=>=>=>=> ] 29% | Count of all parsed: 120. Progress ratio: 9 %. Average price: 33 064 712 rub 6 | 6 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 148. Progress ratio: 11 %. Average price: 31 329 860 rub 7 | 7 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 176. Progress ratio: 13 %. Average price: 28 651 222 rub 8 | 8 page with list: [=>=>=>=>=>=>=>=>=>=> ] 36% | Count of all parsed: 186. Progress ratio: 14 %. Average price: 28 102 324 rub 9 | 9 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 214. Progress ratio: 16 %. Average price: 26 017 806 rub 10 | 10 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 242. Progress ratio: 18 %. Average price: 24 559 144 rub 11 | 11 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 270. Progress ratio: 20 %. Average price: 23 605 283 rub 12 | 12 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 298. Progress ratio: 22 %. Average price: 23 060 063 rub 13 | 13 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 326. Progress ratio: 24 %. Average price: 22 517 627 rub 14 | 14 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 354. Progress ratio: 26 %. Average price: 21 733 530 rub 15 | 15 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 382. Progress ratio: 28 %. Average price: 21 064 540 rub 16 | 16 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 410. Progress ratio: 30 %. Average price: 20 289 005 rub 17 | 17 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 438. Progress ratio: 32 %. Average price: 19 493 500 rub 18 | 18 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=> ] 47% | Count of all parsed: 451. Progress ratio: 33 %. Average price: 19 175 861 rub 19 | 19 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 479. Progress ratio: 35 %. Average price: 18 600 370 rub 20 | 20 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 507. Progress ratio: 37 %. Average price: 18 124 235 rub 21 | 21 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 535. Progress ratio: 39 %. Average price: 17 732 792 rub 22 | 22 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 563. Progress ratio: 41 %. Average price: 17 407 539 rub 23 | 23 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 591. Progress ratio: 43 %. Average price: 17 148 460 rub 24 | 24 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 619. Progress ratio: 45 %. Average price: 16 941 439 rub 25 | 25 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 647. Progress ratio: 47 %. Average price: 16 789 210 rub 26 | 26 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 675. Progress ratio: 49 %. Average price: 16 690 092 rub 27 | 27 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 703. Progress ratio: 51 %. Average price: 16 636 255 rub 28 | 28 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 731. Progress ratio: 53 %. Average price: 16 622 534 rub 29 | 29 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 759. Progress ratio: 55 %. Average price: 16 650 816 rub 30 | 30 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 787. Progress ratio: 57 %. Average price: 16 712 680 rub 31 | 31 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>] 100% | Count of all parsed: 815. Progress ratio: 59 %. Average price: 16 808 550 rub 32 | 32 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=> ] 61% | Count of all parsed: 832. Progress ratio: 60 %. Average price: 16 892 979 rub 33 | 33 page with list: [=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=>=> ] 65% | Count of all parsed: 850. Progress ratio: 61 %. Average price: 17 024 350 rub 34 | 34 page with list: [=>=>=>=>=>=>=>=> ] 29% | Count of all parsed: 858. Progress ratio: 62 %. Average price: 17 102 480 rub

Exception: invalid literal for int() with base 10: '3млн' The collection of information from the pages with ending parse on 34 page...

Average price per day: 17 102 480 rub

The collection of information from the pages with list of announcements is completed Total number of parced announcements: 858. Average price: 17 102 480 rub

CPU times: total: 12 s Wall time: 2min 1s

Запрос такой %%time parse_df = cianparser.parse( deal_type="sale", # долгосрочная, краткосрочная аренда, продажа ("rent_long", "rent_short", "sale") accommodation_type="flat", # вид жилья

(квартира/студия, комната, дом, часть дома, таунхаус)

#("flat", "room", "house", "house-part", "townhouse")
location="Москва", # Поисковый параметр поиска. для просмотра доступных мест используйте cianparser.list_cities()
rooms=(1),
end_page=50,
is_saving_csv=True,
is_express_mode=True

)

lenarsaitov commented 1 year ago

Да, вижу, подправил, стоит обновится до 19 версии. В определенной степени был изменен подход к определению стоимости, названия улиц, а также наименований ЖК на более корректный

Подобные ошибки теперь возникать не должны

Chewingus commented 1 year ago

Всё работает. Точнее работало)) пару запросов и теперь выдает ошибку капчи 1 page: there is CAPTCHA... failed to parse page... ending.. Версия 19

lenarsaitov commented 1 year ago

Отлично!

По поводу капчи, попробуйте перезагрузить роутер, должно помочь (в случае, если у вас динамический ip)

И да, по собственному опыту выявил определенное преимущество в использовании мобильного интернета (через раздачу на ноут), при нем никогда не возникало каких либо проблем, связанных с ограничениями (блокировкой, капчей и проч), даже до тех пор, как были добавлены некоторые функциональности для их обхода

Единственно, мне пока не известно, с чем это связано

lenarsaitov commented 1 year ago

Добавил в 20 версии аргумент для предоставления proxy, а также описание Cloudflare, CloudScraper, proxies

Chewingus commented 1 year ago

Спасибо