Запись данных в csv

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
имеется код (p/s, я новичок в python):


headers = {
"user-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
}
browser = webdriver.Chrome()
url = "https://portal.eaeunion.org/sites/o...475-466a-a340-6f69c01b5687&itemid=231#f=g-150"
browser.get(url)
time.sleep(10)
html = browser.page_source
soup = BeautifulSoup(html, 'lxml')

trs = soup.find('div', class_='cr-view cr-bottom-view').find('table', class_='table').find('tbody').find_all('tr')
table = pd.DataFrame()
for tr in trs:

numb_doc = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_NUMB_DOC"})
for i in numb_doc:
numb_doc = i.text.replace('\n', '')
# print(numb_doc)

status = tr.find_all('td', {"name": "Status"})
for i in status:
status = i.text.replace('\n', '')
# print(status)

date_doc = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_DATE_DOC"})
for i in date_doc:
date_doc = i.text.replace('\n', '')
# print(date_doc)

name_prod = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_NAME_PROD"})
for i in name_prod:
name_prod = i.text.replace('\n', '')
# print(name_prod)

firmmade_name = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_FIRMMADE_NAME"})
for i in firmmade_name:
firmmade_name = i.text.replace('\n', '')
# print(firmmade_name)

firmget_name = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_FIRMGET_NAME"})
for i in firmget_name:
firmget_name = i.text.replace('\n', '')
# print(firmget_name)

doc_usearea = tr.find_all('td', {"name": "tmp_RegisterCertificatesStateRegistration_DOC_USEAREA"})
for i in doc_usearea:
doc_usearea = i.text.replace('\n', '')
# print(doc_usearea)
data_s = [numb_doc, status, date_doc, name_prod, firmmade_name, firmget_name, doc_usearea]

with open("rez.csv", 'a', newline="") as file:
writer = csv.writer(file)
writer.writerow(data_s)


как вывести data_s в csv в виде:

numb_docstatusdate_docname_prodfirmmade_namefirmget_namedoc_usearea

т.е. каждое значение в отдельный столбец

p/s код с отступами во вложении
 

Вложения

  • new_kod.txt
    2,1 КБ · Просмотры: 1
  • расположение.jpg
    расположение.jpg
    41,6 КБ · Просмотры: 1
Последнее редактирование:

4olshoy_blen

Активный пользователь
Пользователь
Ноя 13, 2022
137
32
28
У меня почему-то с кодировкой возникли траблы, не хотел в utf-8 норм отображать символы. Ну и названия столбцов такие же как на сайте, думаю это не критично

Когда вставляешь код, выдели его и нажми на кнопку вида </> сверху на панели. Выбери язык рутхон и будет с отсупами

Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
import time


headers = {
    "user-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 "
                  "Safari/537.36 "
}
browser = webdriver.Chrome()
url = "https://portal.eaeunion.org/sites/odata/_layouts/15/portal.eec.registry.ui/directoryform.aspx?listid=0e3ead06" \
      "-5475-466a-a340-6f69c01b5687&itemid=231#f=g-150&mixed=1&orderbycolumn" \
      "=OWSTMPREGISTERCERTIFICATESSTATEREGISTRATIONNUMBDOC&asc=true "
browser.get(url)
time.sleep(10)
thead = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'th')
tbody = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'tr')
res = [tr.text for tr in thead[:7]]
data = [[i for i in res]]

for i in tbody:
    tr = i.find_elements(By.TAG_NAME, 'td')
    data.append([j.text for j in tr[:7]])

with open('data_new.csv', 'w', newline='', encoding='windows-1251') as file:
    writer = csv.writer(file)
    for row in data:
        writer.writerow(row)
 

4olshoy_blen

Активный пользователь
Пользователь
Ноя 13, 2022
137
32
28
все конечно замечательно, но при выходе все td попадают в первую ячейку
Хз что у тебя там попадает в одну ячейку, но вот я открываю csv в вьювере и все стоит по местам как и на самом сайте

Безымянный.jpg

Так же, возможно, это случилось из-за того, что ты

 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
возникла новая проблема:
with open('f:/sgr/'+str(count+1)+'.csv', 'a', newline="", encoding='windows-1251') as file:
но на сайте случаются такого рода символы: Š, í, и т.д., и соответственно при выполнение выше указанного кода идет ошибка, можно как-то это обойти ?
 

4olshoy_blen

Активный пользователь
Пользователь
Ноя 13, 2022
137
32
28
возникла новая проблема:
with open('f:/sgr/'+str(count+1)+'.csv', 'a', newline="", encoding='windows-1251') as file:
но на сайте случаются такого рода символы: Š, í, и т.д., и соответственно при выполнение выше указанного кода идет ошибка, можно как-то это обойти ?
попробуй добавить параметр errors='ignore' в функцию open()
 

Malenkey

Пользователь
Пользователь
Ноя 3, 2022
140
11
18
А где отступы в коде?
Сюда попробуй 👉 ТЫК
 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
А где отступы в коде?
Сюда попробуй 👉 ТЫК
да хз как тут отступы ставить, вот и приложил *txt
 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
У меня почему-то с кодировкой возникли траблы, не хотел в utf-8 норм отображать символы. Ну и названия столбцов такие же как на сайте, думаю это не критично

Когда вставляешь код, выдели его и нажми на кнопку вида </> сверху на панели. Выбери язык рутхон и будет с отсупами

Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
import time


headers = {
    "user-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 "
                  "Safari/537.36 "
}
browser = webdriver.Chrome()
url = "https://portal.eaeunion.org/sites/odata/_layouts/15/portal.eec.registry.ui/directoryform.aspx?listid=0e3ead06" \
      "-5475-466a-a340-6f69c01b5687&itemid=231#f=g-150&mixed=1&orderbycolumn" \
      "=OWSTMPREGISTERCERTIFICATESSTATEREGISTRATIONNUMBDOC&asc=true "
browser.get(url)
time.sleep(10)
thead = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'th')
tbody = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'tr')
res = [tr.text for tr in thead[:7]]
data = [[i for i in res]]

for i in tbody:
    tr = i.find_elements(By.TAG_NAME, 'td')
    data.append([j.text for j in tr[:7]])

with open('data_new.csv', 'w', newline='', encoding='windows-1251') as file:
    writer = csv.writer(file)
    for row in data:
        writer.writerow(row)

все конечно замечательно, но при выходе все td попадают в первую ячейку, применяю фильтр допустим по запятой, и часть инфы пропадает
 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
У меня почему-то с кодировкой возникли траблы, не хотел в utf-8 норм отображать символы. Ну и названия столбцов такие же как на сайте, думаю это не критично

Когда вставляешь код, выдели его и нажми на кнопку вида </> сверху на панели. Выбери язык рутхон и будет с отсупами

Python:
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
import time


headers = {
    "user-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 "
                  "Safari/537.36 "
}
browser = webdriver.Chrome()
url = "https://portal.eaeunion.org/sites/odata/_layouts/15/portal.eec.registry.ui/directoryform.aspx?listid=0e3ead06" \
      "-5475-466a-a340-6f69c01b5687&itemid=231#f=g-150&mixed=1&orderbycolumn" \
      "=OWSTMPREGISTERCERTIFICATESSTATEREGISTRATIONNUMBDOC&asc=true "
browser.get(url)
time.sleep(10)
thead = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'th')
tbody = browser.find_element(By.CLASS_NAME, 'ct-table-view').find_elements(By.TAG_NAME, 'tr')
res = [tr.text for tr in thead[:7]]
data = [[i for i in res]]

for i in tbody:
    tr = i.find_elements(By.TAG_NAME, 'td')
    data.append([j.text for j in tr[:7]])

with open('data_new.csv', 'w', newline='', encoding='windows-1251') as file:
    writer = csv.writer(file)
    for row in data:
        writer.writerow(row)
возможно ли увеличить отступы между значениями td в data_new через код ???, чтобы потом по этому отступу сделать фильтр в csv, думаю так получится полное отображение инфы
 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
Хз что у тебя там попадает в одну ячейку, но вот я открываю csv в вьювере и все стоит по местам как и на самом сайте


Так же, возможно, это случилось из-за того, что ты
и как мне их впихнуть по своим местам ?
 

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
Хз что у тебя там попадает в одну ячейку, но вот я открываю csv в вьювере и все стоит по местам как и на самом сайте


Так же, возможно, это случилось из-за того, что ты
открываю csv, а там вот так
 

Вложения

  • выход.png
    выход.png
    105,3 КБ · Просмотры: 3

atata199

Новичок
Пользователь
Дек 3, 2022
12
0
1
и как мне их впихнуть по своим местам ?
все, разобрался, спасибо за помощь (y)(y)(y)(y)(y)(y)(y)(y)(y)
 

Форум IT Специалистов