Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126

Парсинг данных

09.07.2019, 19:15. Показов 1558. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, вот код, с помощью которого я получаю с сайта данные. В переменную result, в данном коде поступают результаты матчей, но иногда встречаются вместо цифр слова типа: away, home, Cancelled, как можно игнорировать и не выводить эти слова, мне нужны только цифровые результаты, кто сможет помочь с этим? То есть нужно, чтобы матчи, которые с результатом типа: away, home, Cancelled, просто не учитывались и пропускались...

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import requests
from bs4 import BeautifulSoup
 
url = "https://ru.betsapi.com/cs/tennis/2019-07-06/p.1"
 
response = requests.get(url)
 
html = response.text
 
soup = BeautifulSoup(html, "html.parser")
 
table = soup.find("table", {"class":"table table-sm"})
 
trr = table.find_all("tr")
 
flag1 = 0
flag2 = 0
flag3 = 0
 
for tr in trr:
    liga = tr.find_all("a")[0].text.replace(',', '').replace('M15 ', '').replace('M25 ', '').replace('W25 ', '').replace('W15 ', '').strip()
    name_player_one = tr.find_all("a")[1].text.replace(',', '')
    name_player_two = tr.find_all("a")[2].text.replace(',', '')
    result = tr.find_all("a")[3].text.strip().replace(',', ' ').replace('-', ' ').split()[0:4]
    
    print(result)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2019, 19:15
Ответы с готовыми решениями:

Парсинг данных
Всем привет, осваиваю парсинг на сайте bios.ge, всё отлично работает однако если карточка товара заполненна не корректно и не хватает каких...

Парсинг данных html
Здравствуйте, вот код с помощью которого я делаю парсинг сайта https://forexstandard.ru/countries-currency-in-the-world/. Данные удачно...

Парсинг - нажатие кнопки обновления данных
Привет, не могу понять как нажать кнопку на скрине, я вроде нахожу её, но кликнуть не могу. http://asunp.meteo.ru/portal/hydroweb/home...

5
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
09.07.2019, 19:51
soberfrog, направление:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from builtins import print
import requests
import pygame
import os
import sys
import binascii
from pygame.locals import *
import shutil
import bs4
from bs4 import BeautifulSoup
from urllib.request import urlopen
import time
from smtplib import SMTP_SSL
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import  encoders
import lxml.html
import sqlite3
import urllib
url='http://htmlbook.ru/samhtml5/ustarevshie-tegi-i-atributy/'
def get_html(url):
    f = myhtml = urlopen(url)
    sp = BeautifulSoup(myhtml, "html.parser")
    lnk=sp.find_all("span",class_="tag")
    for l in lnk:
        l=str(l)
        l=l.replace('"',' ')
        l=l.replace("<span class= tag >",'')
        l=l.replace('</span>',' ')
        l=l.replace('&gt','')
        l=l.replace('&lt','')
        l=l.replace(';',' ')
        print(l)
 
if __name__ == '__main__':
    get_html(url)
0
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 126
09.07.2019, 22:21  [ТС]
Что это мне должно дать?
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
09.07.2019, 22:37
В этом коде был папрсинг сайта, с выбором всех спанов с классом tag, можно использовать как пример.
Без адреса сайта не могу помочь больше.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
09.07.2019, 23:29
Цитата Сообщение от soberfrog Посмотреть сообщение
Что это мне должно дать?
Что использовать BS4 - значит писать говнокод.
Учитесь составлять правильные XPATH выражения и будет вам счастье.
Я вашу таблицу могу спарсить несколькими строчками. Но в этих строчках ни разу не будет упомянут суп (только православный lxml).
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.07.2019, 01:49
Со всеми непустыми полями:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import lxml.html
import requests
import re
from pprint import pprint
 
url = 'https://ru.betsapi.com/cs/tennis/2019-07-06/p.1'
data = requests.get(url).text
root = lxml.html.fromstring(data)
 
def test():
    tds = root.cssselect('table[class="table table-sm"] td')
    it = [iter(tds)] * 6
    patt = re.compile(r'away|home|Cancelled')
    data = []
    for t in zip(*it):
         subdata = []
         for _ in t: 
            text = _.text_content().strip()
            if text:
                if not patt.match(text):
                    subdata += [text]
                else:
                    subdata = []
                    break        
         if subdata:
            data.append(subdata)       
       
    pprint(data)
    print(len(data))
# Аналог, где фильтр делается исключительно средствами XPATH

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def test1():
    trs = root.xpath('''
    //table[@class="table table-sm"]/tr[
        not(contains(.,"away")) and
        not(contains(.,"home")) and
        not(contains(.,"Cancelled"))
    ]
    ''')
    data = []
    for tr in trs:
        subdata = []
        for _ in tr.cssselect('td'): 
            text = _.text_content().strip()
            text = re.sub(r'(M|W)\d{2}','',text)  # удалить ненужные символы - одна регулярка вместо кучи replace
            if text:
                subdata += [text]    
        data.append(subdata) 
    pprint(data)
    print(len(data))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2019, 01:49
Помогаю со студенческими работами здесь

Парсинг данных с сайта с авторизацией на Python
Здравствуйте! Я новичок, пишу курсовую и пытаюсь сделать парсер на Python для сайта на котором нужно заполнить форму что бы получить...

Парсинг данных с сайта Московской биржи
Доброго дня! Написал простенький скрипт по парсингу данных ОФЗ с сайта Мос.Биржи. По одному тикеру все срабатывает как надо: ...

Парсинг генерируемого массива данных с сайта в Excel на Python
Не могу сообразить как сделать, чтобы запись переменных с каждой итерацией переносилась на новую строку таблицы, есть ли способ это...

Парсинг данных из crm
Здравствуйте, получилось так, что надо реализовать парсинг данных из CRM системы в телеграм бот, подскажите пожалуйста можно ли это как-то...

Парсинг и конкатенация данных
Здравствуйте. Мне нужно спарсить погоду.Я бы хотел произвести конкатенацию. Да, мне стыдно, но меня переклинело. На примере есть код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru