Парсинг дерева категорий с сохранением структуры

Пресет Парсинг дерева категорий с сохранением структуры 1.0

Available for license holders
  • Автор темы Автор темы Support
  • Дата начала Дата начала

Support

Administrator
Команда форума
A-Parser Enterprise
Иногда возникает необходимость спарсить категории из интернет-магазинов, сохранив при этом их структуру и путь к подкатегории. Ниже показан такой парсинг на примере Яндекс.Маркета. Для упрощения задания используется мобильная версия m.market.yandex.ru.
Примечание: для данного пресета необходима версия А-Парсера 1.1.292 и выше.
loYpE.png

Код:
eyJwcmVzZXQiOiJDYXQgWWFuZGV4Lk1hcmtldCIsInZhbHVlIjp7InByZXNldCI6
IkNhdCBZYW5kZXguTWFya2V0IiwicGFyc2VycyI6W1siTmV0OjpIVFRQIiwiZGVm
YXVsdCIseyJ0eXBlIjoib3ZlcnJpZGUiLCJpZCI6ImZvcm1hdHJlc3VsdCIsInZh
bHVlIjoiWyUgRk9SRUFDSCBpIElOIGludGxpbmtzO1xucyA9IFwiXFx0XCI7XG5z
LnJlcGVhdChxdWVyeS5sdmwpXyBxdWVyeS5wYXRoIF9cIiA+IFwiXyBpLmFuY2hv
ciBfXCI6IGh0dHA6Ly9tLm1hcmtldC55YW5kZXgucnVcIl8gaS5saW5rIF9cIlxc
blwiO1xuRU5EICVdIn0seyJ0eXBlIjoib3ZlcnJpZGUiLCJpZCI6InF1ZXJ5Zm9y
bWF0IiwidmFsdWUiOiIkcXVlcnkubGluayJ9LHsidHlwZSI6Im92ZXJyaWRlIiwi
aWQiOiJnb29kQ29kZSIsInZhbHVlIjoyMDB9LHsidHlwZSI6Im9wdGlvbnMiLCJp
ZCI6ImNoZWNrQ29udGVudCIsInZhbHVlIjoiXHUwNDJmXHUwNDNkXHUwNDM0XHUw
NDM1XHUwNDNhXHUwNDQxXFwuXHUwNDFjXHUwNDMwXHUwNDQwXHUwNDNhXHUwNDM1
XHUwNDQyPFxcL3RpdGxlPiJ9LHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJwcm94
eXJldHJpZXMiLCJ2YWx1ZSI6IjEwMCJ9LHsidHlwZSI6ImN1c3RvbVJlc3VsdCIs
InJlc3VsdCI6ImRhdGEiLCJyZWdleCI6IjxoMSBjbGFzcz1cImItdGl0bGVcIj4o
Lis/KSg/Olx1MDQyMVx1MDQzY1x1MDQzNVx1MDQzNlx1MDQzZFx1MDQ0Ylx1MDQz
NSBcdTA0M2FcdTA0MzBcdTA0NDJcdTA0MzVcdTA0MzNcdTA0M2VcdTA0NDBcdTA0
MzhcdTA0Mzh8aHRtbCkiLCJyZWdleFR5cGUiOiIiLCJyZXN1bHRUeXBlIjoiZmxh
dCIsImFycmF5TmFtZSI6IiIsInJlc3VsdHMiOlsic291cmNlIl19LHsidHlwZSI6
ImN1c3RvbVJlc3VsdCIsInJlc3VsdCI6InNvdXJjZSIsInJlZ2V4IjoiYi1zdWJ0
aXRsZVwiPjxhIGhyZWY9XCIoXFwvY2F0YWxvZ1xcLnhtbFxcP2hpZD1cXGQrKVwi
PiguKz8pPCIsInJlZ2V4VHlwZSI6ImciLCJyZXN1bHRUeXBlIjoiYXJyYXkiLCJh
cnJheU5hbWUiOiJpbnRsaW5rcyIsInJlc3VsdHMiOlsibGluayIsImFuY2hvciJd
fSx7InR5cGUiOiJ1bmlxdWUiLCJyZXN1bHQiOlsiaW50bGlua3MiLCJsaW5rIl0s
InVuaXF1ZVR5cGUiOiJzdHJpbmciLCJ1bmlxdWVHbG9iYWwiOnRydWV9XV0sInJl
c3VsdHNGb3JtYXQiOiJbJSBGT1JFQUNIIGkgSU4gcDEuaW50bGlua3M7XG50b29s
cy5xdWVyeS5hZGQoXCJodHRwOi8vbS5tYXJrZXQueWFuZGV4LnJ1XCJfIGkubGlu
ayBfXCJ8XCJfIHF1ZXJ5LnBhdGggX1wiID4gXCJfIGkuYW5jaG9yKTtcbkVORCAl
XSRwMS5wcmVzZXQiLCJyZXN1bHRzU2F2ZVRvIjoiZmlsZSIsInJlc3VsdHNGaWxl
TmFtZSI6IiRkYXRlZmlsZS5mb3JtYXQoKS50eHQiLCJhZGRpdGlvbmFsRm9ybWF0
cyI6W10sInJlc3VsdHNVbmlxdWUiOiJubyIsInF1ZXJ5Rm9ybWF0IjpbIiRxdWVy
eXxcdTA0MTNcdTA0M2JcdTA0MzBcdTA0MzJcdTA0M2RcdTA0MzBcdTA0NGYiXSwi
dW5pcXVlUXVlcmllcyI6ZmFsc2UsInNhdmVGYWlsZWRRdWVyaWVzIjpmYWxzZSwi
aXRlcmF0b3JPcHRpb25zIjp7Im9uQWxsTGV2ZWxzIjpmYWxzZSwicXVlcnlCdWls
ZGVyc0FmdGVySXRlcmF0b3IiOnRydWUsInF1ZXJ5QnVpbGRlcnNPbkFsbExldmVs
cyI6dHJ1ZX0sInJlc3VsdHNPcHRpb25zIjp7Im92ZXJ3cml0ZSI6ZmFsc2V9LCJk
b0xvZyI6ImRiIiwia2VlcFVuaXF1ZSI6Ik5vIiwibW9yZU9wdGlvbnMiOmZhbHNl
LCJyZXN1bHRzUHJlcGVuZCI6IiIsInJlc3VsdHNBcHBlbmQiOiIiLCJxdWVyeUJ1
aWxkZXJzIjpbeyJzb3VyY2UiOiJxdWVyeSIsInR5cGUiOiJzdHJpbmdTcGxpdCIs
InNlcGFyYXRvciI6InwiLCJ0byI6WyJsaW5rIiwicGF0aCJdfV0sInJlc3VsdHNC
dWlsZGVycyI6W10sImNvbmZpZ092ZXJyaWRlcyI6W119fQ==
Логика заключается в следующем. На первом шаге парсятся ссылки на основные категории и их названия. Ссылки вместе с путем к ним выводятся в результат и подставляются в запросы для следующего шага. На втором шаге запрос разделяется на ссылку и путь к ней. По ссылке делается запрос, парсятся ссылки на категории и их названия. Все это опять выводится в результат и подставляется в запросы на следующий шаг. При этом проверяется уникализация запросов и результатов. И так до тех пор, пока есть новые, уникальные категории. В итоге имеем полный перечень категорий и путей к ним.
Результат:
XJ2E4.png
 
Пресет обновлен в связи с изменением выдачи.
Код:
eyJwcmVzZXQiOiJDYXQgWWFuZGV4Lk1hcmtldCIsInZhbHVlIjp7InByZXNldCI6
IkNhdCBZYW5kZXguTWFya2V0IiwicGFyc2VycyI6W1siTmV0OjpIVFRQIiwiZGVm
YXVsdCIseyJ0eXBlIjoib3ZlcnJpZGUiLCJpZCI6InF1ZXJ5Zm9ybWF0IiwidmFs
dWUiOiIkcXVlcnkubGluayJ9LHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJnb29k
Q29kZSIsInZhbHVlIjpbMjAwXX0seyJ0eXBlIjoib3B0aW9ucyIsImlkIjoiY2hl
Y2tDb250ZW50IiwidmFsdWUiOiJcdTA0MmZcdTA0M2RcdTA0MzRcdTA0MzVcdTA0
M2FcdTA0NDFcXC5cdTA0MWNcdTA0MzBcdTA0NDBcdTA0M2FcdTA0MzVcdTA0NDI8
XFwvdGl0bGU+IiwiYWRkaXRpb25hbCI6eyJjaGVja0NvbnRlbnRNYXRjaFR5cGUi
OjF9fSx7InR5cGUiOiJvdmVycmlkZSIsImlkIjoicHJveHlyZXRyaWVzIiwidmFs
dWUiOiIxMDAifSx7InR5cGUiOiJjdXN0b21SZXN1bHQiLCJyZXN1bHQiOiJkYXRh
IiwicmVnZXgiOiI8bGkgY2xhc3M9XCJiLWxpc3RfX2l0ZW0uKz9ocmVmPVwiKFxc
L2NhdGFsb2dcXC8uKz8pXCJbXj5dKj4oLis/KTxcXC9hPiIsInJlZ2V4VHlwZSI6
ImciLCJyZXN1bHRUeXBlIjoiYXJyYXkiLCJhcnJheU5hbWUiOiJpbnRsaW5rcyIs
InJlc3VsdHMiOlsibGluayIsImFuY2hvciJdfSx7InR5cGUiOiJ1bmlxdWUiLCJy
ZXN1bHQiOlsiaW50bGlua3MiLCJsaW5rIl0sInVuaXF1ZVR5cGUiOiJzdHJpbmci
LCJ1bmlxdWVHbG9iYWwiOnRydWV9XV0sInJlc3VsdHNGb3JtYXQiOiJbJSBGT1JF
QUNIIGkgSU4gcDEuaW50bGlua3M7XG5cdHRvb2xzLnF1ZXJ5LmFkZCgnaHR0cDov
L20ubWFya2V0LnlhbmRleC5ydScgXyBpLmxpbmsgXyAnfCcgXyBxdWVyeS5wYXRo
IF8gJyA+ICcgXyBpLmFuY2hvcik7XG5cdHMgPSBcIlxcdFwiO1xuXHRzLnJlcGVh
dChxdWVyeS5sdmwpIF8gcXVlcnkucGF0aCBfICcgPiAnIF8gaS5hbmNob3IgXyAn
OiBodHRwOi8vbS5tYXJrZXQueWFuZGV4LnJ1JyBfIGkubGluayBfIFwiXFxuXCI7
XG5FTkQgJV0iLCJyZXN1bHRzU2F2ZVRvIjoiZmlsZSIsInJlc3VsdHNGaWxlTmFt
ZSI6IiRkYXRlZmlsZS5mb3JtYXQoKS50eHQiLCJhZGRpdGlvbmFsRm9ybWF0cyI6
W10sInJlc3VsdHNVbmlxdWUiOiJubyIsInF1ZXJpZXNGcm9tIjoidGV4dCIsInF1
ZXJ5Rm9ybWF0IjpbIiRxdWVyeXxcdTA0MTNcdTA0M2JcdTA0MzBcdTA0MzJcdTA0
M2RcdTA0MzBcdTA0NGYiXSwidW5pcXVlUXVlcmllcyI6ZmFsc2UsInNhdmVGYWls
ZWRRdWVyaWVzIjpmYWxzZSwiaXRlcmF0b3JPcHRpb25zIjp7Im9uQWxsTGV2ZWxz
IjpmYWxzZSwicXVlcnlCdWlsZGVyc0FmdGVySXRlcmF0b3IiOnRydWUsInF1ZXJ5
QnVpbGRlcnNPbkFsbExldmVscyI6dHJ1ZX0sInJlc3VsdHNPcHRpb25zIjp7Im92
ZXJ3cml0ZSI6ZmFsc2V9LCJkb0xvZyI6Im5vIiwia2VlcFVuaXF1ZSI6Ik5vIiwi
bW9yZU9wdGlvbnMiOmZhbHNlLCJyZXN1bHRzUHJlcGVuZCI6IiIsInJlc3VsdHNB
cHBlbmQiOiIiLCJxdWVyeUJ1aWxkZXJzIjpbeyJzb3VyY2UiOiJxdWVyeSIsInR5
cGUiOiJzdHJpbmdTcGxpdCIsInNlcGFyYXRvciI6InwiLCJ0byI6WyJsaW5rIiwi
cGF0aCJdfV0sInJlc3VsdHNCdWlsZGVycyI6W10sImNvbmZpZ092ZXJyaWRlcyI6
W10sInJ1blRhc2tPbkNvbXBsZXRlIjpudWxsLCJ1c2VSZXN1bHRzRmlsZUFzUXVl
cmllc0ZpbGUiOmZhbHNlLCJydW5UYXNrT25Db21wbGV0ZUNvbmZpZyI6ImRlZmF1
bHQiLCJ0b29sc0pTIjoiIiwicXVlcmllcyI6Imh0dHA6Ly9tLm1hcmtldC55YW5k
ZXgucnUvIn19
 
Так и не разобрался откуда эта конструкция:
<li class="b-list__item.+?href="(\/catalog\/.+?)"[^>]*>(.+?)<\/a>
Просмотрел много страниц маркета, но в html нету ничего с классом b-list__item
Здесь ведь собираются анкоры ссылок? Хотя возможно на маркете что-то поменяли, с сентября.
 
Да, там полностью изменилась верстка.
 
В связи с изменением верстки пресет полностью переписан. Теперь, кроме пути и ссылки, на следующий уровень нужно передавать еще и куки. Кроме этого, теперь на всех уровнях кроме 0-го, результат приходит в JSON, а в запросе нужно использовать несколько дополнительных параметров, которые получаются на 0-м уровне.
b0h5i.png

Код:
eyJwcmVzZXQiOiJZYS5cdTA0MWNcdTA0MzBcdTA0NDBcdTA0M2FcdTA0MzVcdTA0
NDIgbmV3IiwidmFsdWUiOnsicHJlc2V0IjoiWWEuXHUwNDFjXHUwNDMwXHUwNDQw
XHUwNDNhXHUwNDM1XHUwNDQyIG5ldyIsInBhcnNlcnMiOltbIk5ldDo6SFRUUCIs
ImRlZmF1bHQiLHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJnb29kQ29kZSIsInZh
bHVlIjpbMjAwXX0seyJ0eXBlIjoiY3VzdG9tUmVzdWx0IiwicmVzdWx0IjoiZGF0
YSIsInJlZ2V4IjoiZGF0YS1uaWQ9XCIoLis/KVwiLis/PGRpdiBjbGFzcz1cIm4t
bmF2LW1lbnVfX2NhdGVnb3J5LXRpdGxlIHRleHRfc2l6ZV9tXCI+KC4rPyk8XFwv
ZGl2PiIsInJlZ2V4VHlwZSI6ImciLCJyZXN1bHRUeXBlIjoiYXJyYXkiLCJhcnJh
eU5hbWUiOiJjYXRzIiwicmVzdWx0cyI6WyJpZCIsIm5hbWUiXX0seyJ0eXBlIjoi
b3ZlcnJpZGUiLCJpZCI6ImNvb2tpZXMiLCJ2YWx1ZSI6InlhbmRleHVpZD0kcXVl
cnkueXVpZCJ9LHsidHlwZSI6ImZpbHRlciIsInJlc3VsdCI6WyJjYXRzIiwiaWQi
XSwiZmlsdGVyVHlwZSI6Im5vdGVxdWFsIiwidmFsdWUiOiI2MTUyMiIsIm9wdGlv
biI6InNlbnMifSx7InR5cGUiOiJjdXN0b21SZXN1bHQiLCJyZXN1bHQiOiJkYXRh
IiwicmVnZXgiOiJcInNrXCI6XCIoW15cIl0rKVwiIiwicmVnZXhUeXBlIjoiIiwi
cmVzdWx0VHlwZSI6ImZsYXQiLCJhcnJheU5hbWUiOiIiLCJyZXN1bHRzIjpbInNr
Il19LHsidHlwZSI6ImN1c3RvbVJlc3VsdCIsInJlc3VsdCI6ImhlYWRlcnMiLCJy
ZWdleCI6InlhbmRleHVpZD0oLis/KSg/Ojt8JCkiLCJyZWdleFR5cGUiOiIiLCJy
ZXN1bHRUeXBlIjoiZmxhdCIsImFycmF5TmFtZSI6IiIsInJlc3VsdHMiOlsieXVp
ZCJdfSx7InR5cGUiOiJvdmVycmlkZSIsImlkIjoicXVlcnlmb3JtYXQiLCJ2YWx1
ZSI6IiRxdWVyeS5saW5rIn1dXSwicmVzdWx0c0Zvcm1hdCI6IlslIHMgPSBcIlxc
dFwiO1xuSUYgcXVlcnkubHZsID09IDA7XG5cdEZPUkVBQ0ggcDEuY2F0cztcblx0
XHR0b29scy5xdWVyeS5hZGQoJ2h0dHBzOi8vbS5tYXJrZXQueWFuZGV4LnJ1L2Fw
aS9jYXRhbG9nZXIvZ2V0TmF2aWdhdGlvblRyZWU/c2s9JyBfIHAxLnNrIF8gJyZu
aWQ9JyBfIGlkIF8gJ3wnIF8gcDEueXVpZCBfICd8JyBfIHF1ZXJ5Lm5hbWUgXyAn
ID4gJyBfIG5hbWUpO1xuXHRFTkQ7XG5FTFNFO1xuXHRqc29uID0gdG9vbHMucGFy
c2VKU09OKHAxLmRhdGEpO1xuXHRuID0gcXVlcnkubHZsIC0gMTtcblx0cy5yZXBl
YXQobikgXyBxdWVyeS5uYW1lIF8gJzogaHR0cHM6Ly9tYXJrZXQueWFuZGV4LnJ1
JyBfIGpzb24uY2F0ZWdvcmllcy5uYXZub2Rlcy4wLnVybCBfIFwiXFxuXCI7XG5c
dGsgPSBqc29uLmNhdGVnb3JpZXMubmF2bm9kZXMuc2l6ZSAtIDE7XG5cdEZPUkVB
Q0ggaSBJTiBbMS4ua107XG5cdFx0dG9vbHMucXVlcnkuYWRkKCdodHRwczovL20u
bWFya2V0LnlhbmRleC5ydS9hcGkvY2F0YWxvZ2VyL2dldE5hdmlnYXRpb25UcmVl
P3NrPScgXyBxdWVyeS5zayBfICcmbmlkPScgXyBqc29uLmNhdGVnb3JpZXMubmF2
bm9kZXMuJGkuaWQgXyAnfCcgXyBxdWVyeS55dWlkIF8gJ3wnIF8gcXVlcnkubmFt
ZSBfICcgPiAnIF8ganNvbi5jYXRlZ29yaWVzLm5hdm5vZGVzLiRpLmZ1bGxOYW1l
KTtcblx0RU5EO1xuRU5EICVdIiwicmVzdWx0c1NhdmVUbyI6ImZpbGUiLCJyZXN1
bHRzRmlsZU5hbWUiOiIkZGF0ZWZpbGUuZm9ybWF0KCkudHh0IiwiYWRkaXRpb25h
bEZvcm1hdHMiOltdLCJyZXN1bHRzVW5pcXVlIjoibm8iLCJxdWVyaWVzRnJvbSI6
InRleHQiLCJxdWVyeUZvcm1hdCI6WyIkcXVlcnl8fFx1MDQxM1x1MDQzYlx1MDQz
MFx1MDQzMlx1MDQzZFx1MDQzMFx1MDQ0ZiJdLCJ1bmlxdWVRdWVyaWVzIjpmYWxz
ZSwic2F2ZUZhaWxlZFF1ZXJpZXMiOmZhbHNlLCJpdGVyYXRvck9wdGlvbnMiOnsi
b25BbGxMZXZlbHMiOmZhbHNlLCJxdWVyeUJ1aWxkZXJzQWZ0ZXJJdGVyYXRvciI6
dHJ1ZSwicXVlcnlCdWlsZGVyc09uQWxsTGV2ZWxzIjp0cnVlfSwicmVzdWx0c09w
dGlvbnMiOnsib3ZlcndyaXRlIjpmYWxzZX0sImRvTG9nIjoibm8iLCJrZWVwVW5p
cXVlIjoiTm8iLCJtb3JlT3B0aW9ucyI6ZmFsc2UsInJlc3VsdHNQcmVwZW5kIjoi
IiwicmVzdWx0c0FwcGVuZCI6IiIsInF1ZXJ5QnVpbGRlcnMiOlt7InNvdXJjZSI6
InF1ZXJ5IiwidHlwZSI6InN0cmluZ1NwbGl0Iiwic2VwYXJhdG9yIjoifCIsInRv
IjpbImxpbmsiLCJ5dWlkIiwibmFtZSJdfSx7InNvdXJjZSI6ImxpbmsiLCJ0eXBl
IjoicmVnZXgiLCJyZWdleCI6InNrPSguKz8pJiIsInJlZ2V4VHlwZSI6bnVsbCwi
dG8iOlsic2siXX1dLCJyZXN1bHRzQnVpbGRlcnMiOltdLCJjb25maWdPdmVycmlk
ZXMiOltdLCJydW5UYXNrT25Db21wbGV0ZSI6bnVsbCwidXNlUmVzdWx0c0ZpbGVB
c1F1ZXJpZXNGaWxlIjpmYWxzZSwicnVuVGFza09uQ29tcGxldGVDb25maWciOiJk
ZWZhdWx0IiwidG9vbHNKUyI6IiIsInF1ZXJpZXMiOiJodHRwczovL20ubWFya2V0
LnlhbmRleC5ydS8ifX0=
Пример результата:
xbAxP.png
 
Назад
Верх