Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Python и немного парсинга  (Прочитано 1033 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн funk2256

  • Автор темы
  • Активист
  • *
  • Сообщений: 431
  • Arch + Xfce
    • Просмотр профиля
Python и немного парсинга
« : 14 Мая 2018, 18:44:26 »
Ув, хочу запилить скрипт под коньки, но не в этом суть.
Нужно спарсить Тык

#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup

url = 'https://forum.ubuntu.ru/index.php?action=login2'
session = requests.Session()
       
params = {
    'user' :'funk2256',
    'passwrd' : '****'
    }
r = session.post(url, params)

soup = BeautifulSoup(r.text, 'html.parser')
name_user = soup.find("li", class_="normaltext").text
title = soup.find("title").text
message =soup.find(class_="normaltext").findNext('li').text
print('\t',title[:38],'\n',name_user,'\n', message)



url2 = 'https://forum.ubuntu.ru/index.php?action=unread'
r = session.post(url2)
soup = BeautifulSoup(r.text, 'html.parser')
table2 = soup.find_all('td')
table3 = soup.find_all('span')

#print(table2) #Вывод таблицы
#print(table3) #Вывод <span>

И так, как я определил, на странице данные находятся в таблице, ну или через span  можно получить.
Ну и мне нужны только заголовки, не понимаю как их вытащить. :'( :idiot2:, причем не понимаю ни как через таблицу их сдернуть, ни как их сдернуть через <span>.
Заранее спасибо всем участвующим.
« Последнее редактирование: 14 Мая 2018, 18:51:49 от funk2256 »
Feci quod potui, faciant meliora potentes.(Я сделал всё, что смог, пусть те, кто смогут, сделают лучше)
Новичкам
Шпаргалка команд

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #1 : 16 Мая 2018, 12:28:07 »
Like this one
Код: (python) [Выделить]
table2 = soup.find_all('td', class_="subject windowbg2")

for td in table2 :
    for ceil in td.children :
        head = ceil.find('span')
        if (head != -1) :
            title = head.find('a').text
            print(title)


HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #2 : 16 Мая 2018, 13:45:07 »
EvangelionDeath, Лишнюю операцию зачем?
Код: (python) [Выделить]
            print(head.find('a').text)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #3 : 16 Мая 2018, 16:37:38 »
Azure, ему надо добавлять в табличку, потому просто для наглядности (ибо можно и тернарной операцией обойтись). И что бы проверку не забыл %)
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн funk2256

  • Автор темы
  • Активист
  • *
  • Сообщений: 431
  • Arch + Xfce
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #4 : 17 Мая 2018, 17:28:37 »
Упс... Забыл про тему... r = s.get(url,headers=headers)
text = re.findall(r'\<span[^\>]+><a[^\>]+>(.*?)\<\/a\>\<\/span\>', r.text)
вот так помогли решить вопрос.

По итогу вот код
Ну и для чего это делалось.
Feci quod potui, faciant meliora potentes.(Я сделал всё, что смог, пусть те, кто смогут, сделают лучше)
Новичкам
Шпаргалка команд

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #5 : 17 Мая 2018, 19:04:50 »
funk2256, Два замечания по коду
1) я стесняюсь спросить: а для чего вы тогда там подключаете еще и парсер, если его не используете. А потом по форуму темы - программисты криворукие, память жрет
2) Для чего вы указываете ИД сессии? Не стоит так делать, если Вы не используете куки при работе скрипта
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн funk2256

  • Автор темы
  • Активист
  • *
  • Сообщений: 431
  • Arch + Xfce
    • Просмотр профиля
Re: Python и немного парсинга
« Ответ #6 : 17 Мая 2018, 19:09:38 »
EvangelionDeath, учту оба замечания, пойду править код. Всем спасибо.
Feci quod potui, faciant meliora potentes.(Я сделал всё, что смог, пусть те, кто смогут, сделают лучше)
Новичкам
Шпаргалка команд

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.