Уведомления

Группа в Telegram: @pythonsu

#1 Июль 20, 2021 23:36:52

L.E.N.I
Зарегистрирован: 2021-07-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не можу закончить парсер

Парсер почти готов, але есть проблема: есть товар на сайте которые парсу, отбираю только нужные по артикулу, провераю наличие товара. Вопрос: как синхронизировать эти данные, тобто если товар есть в наличие на сайте(с которого парсу)то и у меня на сайте он тоже должен быть в наличие. Как это сделать?

Офлайн

#2 Июль 21, 2021 02:22:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Не можу закончить парсер

L.E.N.I
тобто если товар есть в наличие на сайте(с которого парсу)то и у меня на сайте он тоже должен быть в наличие
Что значит “должен быть”? Должен появиться там или что?



Офлайн

#3 Июль 21, 2021 22:16:31

Ocean
Зарегистрирован: 2021-03-14
Сообщения: 131
Репутация: +  9  -
Профиль   Отправить e-mail  

Не можу закончить парсер

py.user.next
наверное статус товара на своем сайте хочет синхронизировать со статусом у донора
чтобы когда на доноре в наличие и у него в наличие, как заканчивается на доноре, то и у него недоступен становится


Офлайн

#4 Июль 21, 2021 23:17:26

L.E.N.I
Зарегистрирован: 2021-07-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не можу закончить парсер

Ocean
Спасибо что исправил меня. Есть ли какие небудь идеи на этот щот?

Офлайн

#5 Июль 22, 2021 00:44:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Не можу закончить парсер

Если ты товар правильно отыскиваешь, то ты парсер закончил. Результат работы парсера - это найденные данные. Если тебе надо дальше с этими найденными данными что-то делать (использовать для синхронизации или ещё чего-то), то ты пишешь вторую программу. Потом эти две программы соединяёшь, передавая данные на выходе одной программы на вход другой программы.



Офлайн

#6 Авг. 8, 2021 23:02:32

L.E.N.I
Зарегистрирован: 2021-07-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не можу закончить парсер

py.user.next
Если ты товар правильно отыскиваешь, то ты парсер закончил. Результат работы парсера - это найденные данные. Если тебе надо дальше с этими найденными данными что-то делать (использовать для синхронизации или ещё чего-то), то ты пишешь вторую программу. Потом эти две программы соединяёшь, передавая данные на выходе одной программы на вход другой программы.
Спасибо, что пояснили. Но у меня возникла другая проблема: когда я пытаюсь найти через find_all() теги, оно возвращает мне пустой кортеж. Никак не могу понять в чем дело.

Прикреплённый файлы:
attachment cod.jpg (168,3 KБ)

Офлайн

#7 Авг. 8, 2021 23:12:25

L.E.N.I
Зарегистрирован: 2021-07-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не можу закончить парсер

Блок кода страницы с которого пытаюсь спарсить.

Прикреплённый файлы:
attachment cod_pade.jpg (52,0 KБ)

Офлайн

#8 Авг. 9, 2021 01:16:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Не можу закончить парсер

L.E.N.I
когда я пытаюсь найти через find_all() теги, оно возвращает мне пустой кортеж
bs4. doc. searching the tree
Надо сделать атрибут href регулярным выражением. Также можно функцию сделать там.

  
>>> import bs4
>>> import re
>>> 
>>> text = """
... <html>
... <body>
... <a href="/a/b/c/1">link1</a>
... <a href="/a/b/c/2">link2</a>
... <a href="/a/b/c/3">link3</a>
... <a href="/a/b/c/4">link4</a>
... 
... <a href="/d/e/f/1">link5</a>
... <a href="/d/e/f/2">link6</a>
... <a href="/d/e/f/3">link7</a>
... <a href="/d/e/f/4">link8</a>
... </body>
... </html>
... """
>>> 
>>> doc = bs4.BeautifulSoup(text, 'html.parser')
>>> 
>>> links = doc.find_all('a', href='/a/b/c/')
>>> links
[]
>>> 
>>> links = doc.find_all('a', href=re.compile(r'/a/b/c/'))
>>> links
[<a href="/a/b/c/1">link1</a>, <a href="/a/b/c/2">link2</a>, <a href="/a/b/c/3">link3</a>, <a href="/a/b/c/4">link4</a>]
>>> 
>>> links = doc.find_all('a', href=lambda i: i.startswith('/a/b/c/'))
>>> links
[<a href="/a/b/c/1">link1</a>, <a href="/a/b/c/2">link2</a>, <a href="/a/b/c/3">link3</a>, <a href="/a/b/c/4">link4</a>]
>>>


tags: beautiful soup search



Отредактировано py.user.next (Авг. 9, 2021 01:17:28)

Офлайн

#9 Авг. 9, 2021 15:53:29

L.E.N.I
Зарегистрирован: 2021-07-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не можу закончить парсер

py.user.next
На жаль не помогло. Не знаю имеет ли это значение, но для того чтобы спарсить нужные данные надо быть авторизированным. В браузере я авторизированный на сайте, но может быть это надо ещё как то в программе написать?

Прикреплённый файлы:
attachment cod_2.jpg (171,5 KБ)

Офлайн

#10 Авг. 9, 2021 17:09:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Не можу закончить парсер

L.E.N.I
В браузере я авторизированный на сайте, но может быть это надо ещё как то в программе написать?
Если без авторизации данные недоступны, то надо авторизоваться. Надо проанализировать то, как браузер поддерживает авторизацию между запросами. Для этого надо открыть отладчик в браузере и там посмотреть вкладку “сеть”. Потом это просто воспроизводится в скрипте. Может быть, там не всё так сложно. А может и так быть, что там какой-то слой авторизации, наложенный на протокол, который проблематично будет воспроизвести.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version