Найти - Пользователи
Полная версия: Не можу закончить парсер
Начало » Python для новичков » Не можу закончить парсер
1 2
L.E.N.I
Парсер почти готов, але есть проблема: есть товар на сайте которые парсу, отбираю только нужные по артикулу, провераю наличие товара. Вопрос: как синхронизировать эти данные, тобто если товар есть в наличие на сайте(с которого парсу)то и у меня на сайте он тоже должен быть в наличие. Как это сделать?
py.user.next
L.E.N.I
тобто если товар есть в наличие на сайте(с которого парсу)то и у меня на сайте он тоже должен быть в наличие
Что значит “должен быть”? Должен появиться там или что?
Ocean
py.user.next
наверное статус товара на своем сайте хочет синхронизировать со статусом у донора
чтобы когда на доноре в наличие и у него в наличие, как заканчивается на доноре, то и у него недоступен становится


L.E.N.I
Ocean
Спасибо что исправил меня. Есть ли какие небудь идеи на этот щот?
py.user.next
Если ты товар правильно отыскиваешь, то ты парсер закончил. Результат работы парсера - это найденные данные. Если тебе надо дальше с этими найденными данными что-то делать (использовать для синхронизации или ещё чего-то), то ты пишешь вторую программу. Потом эти две программы соединяёшь, передавая данные на выходе одной программы на вход другой программы.
L.E.N.I
py.user.next
Если ты товар правильно отыскиваешь, то ты парсер закончил. Результат работы парсера - это найденные данные. Если тебе надо дальше с этими найденными данными что-то делать (использовать для синхронизации или ещё чего-то), то ты пишешь вторую программу. Потом эти две программы соединяёшь, передавая данные на выходе одной программы на вход другой программы.
Спасибо, что пояснили. Но у меня возникла другая проблема: когда я пытаюсь найти через find_all() теги, оно возвращает мне пустой кортеж. Никак не могу понять в чем дело.
L.E.N.I
Блок кода страницы с которого пытаюсь спарсить.
py.user.next
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
L.E.N.I
py.user.next
На жаль не помогло. Не знаю имеет ли это значение, но для того чтобы спарсить нужные данные надо быть авторизированным. В браузере я авторизированный на сайте, но может быть это надо ещё как то в программе написать?
py.user.next
L.E.N.I
В браузере я авторизированный на сайте, но может быть это надо ещё как то в программе написать?
Если без авторизации данные недоступны, то надо авторизоваться. Надо проанализировать то, как браузер поддерживает авторизацию между запросами. Для этого надо открыть отладчик в браузере и там посмотреть вкладку “сеть”. Потом это просто воспроизводится в скрипте. Может быть, там не всё так сложно. А может и так быть, что там какой-то слой авторизации, наложенный на протокол, который проблематично будет воспроизвести.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB