Второй python код bs4 и сохранение данных в текстовый файл - PullRequest
3 голосов
/ 06 января 2020

Мне удалось написать свой второй python код, и я пытаюсь извлечь данные из таблицы на веб-странице, т.е. www.ksmnet.org. Мне нужны данные 2-го столбца таблицы, которая является сегодняшней датой, и мне удалось чтобы извлечь это хорошо. Однако мне нужно, чтобы данные 1-го столбца данных были сохранены в виде текстового файла, содержащего данные 2-го столбца. Например, если Fajr - 05:00, мне нужно сохранить текстовый файл как Fajr.txt, а внутри этого текстового файла мне нужно 05:00.

Я понимаю, что в некоторых случаях не с символом ":", и мне нужно преобразовать их. Так, например, те с 06.00 должны быть 06:00.

Вот мой код:

# import libraries
import json
import urllib.request
#import soupsieve
from bs4 import BeautifulSoup
import requests

url = 'https://www.ksmnet.org/'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
html = response.read()
soup = BeautifulSoup(html.decode("utf-8"), "html.parser")
path = '/srv/docker/homeassistant/prayer/'


table = soup.find('div', id={'prayer': 'listing sortable'})
package = '' ; version = ''
for i in table.select('tr'):
    data = i.select('td')
    if data:
        package = data[0].text.strip()
        version = ' '.join(data[1].text.strip().split())
        print(version)

Может кто-нибудь помочь, пожалуйста?

Спасибо

1 Ответ

2 голосов
/ 06 января 2020

Вот код для записи в текстовом файле.

import urllib.request
#import soupsieve
from bs4 import BeautifulSoup
import requests

url = 'https://www.ksmnet.org/'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
html = response.read()
soup = BeautifulSoup(html.decode("utf-8"), "html.parser")
path = '/srv/docker/homeassistant/prayer/'


table = soup.find('div', id={'prayer': 'listing sortable'})
package = '' ; version = ''
for i in table.select('tr'):
    data = i.select('td')
    if data:
        package = data[0].text.strip()
        file = open(package[:-1] +".txt", "w+")
        version =data[1].text.strip().replace('.',':')
        file.write(version)
        file.close()

ИЛИ вы можете использовать python pandas.

import pandas as pd
url = 'https://www.ksmnet.org/'
df=pd.read_html(url)[0]
for pkg, version in zip(df['Date'],df['06/01']):
    file = open(pkg[:-1] +".txt", "w+")
    version =version.replace('.',':').strip()
    file.write(version)
    file.close()

ОБНОВЛЕНИЕ проверочных цифр

import urllib.request
#import soupsieve
from bs4 import BeautifulSoup
import requests

url = 'https://www.ksmnet.org/'
request = urllib.request.Request(url)
response = urllib.request.urlopen(request)
html = response.read()
soup = BeautifulSoup(html.decode("utf-8"), "html.parser")
path = '/srv/docker/homeassistant/prayer/'


table = soup.find('div', id={'prayer': 'listing sortable'})
package = '' ; version = ''
for i in table.select('tr'):
    data = i.select('td')
    if data:
        package = data[0].text.strip()
        file = open(package[:-1] +".txt", "w+")
        version =data[1].text.strip().replace('.',':')

        #Check hours
        checkHours = version.split(':')[0]
        if len(checkHours) < 2:
            version ="0" + str(checkHours) +':' + version.split(':')[-1]
           # print(version)
        #Check minutes
        checkMinute = version.split(':')[-1]
        if len(checkMinute) < 2:
            version = version.split(':')[0] + ":" + "0" + str(checkMinute)
            print(version)

        file.write(version)
        file.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...