Импорт очищенных данных с веб-сайта непосредственно в PostgreSQL.

Я хочу импортировать данные из Интернета непосредственно в PostgreSQL, не экспортируя их в .csv.

Вот код, который я использую для экспорта данных в файл .csv, а затем импортирую его вручную. Любая помощь будет оценена

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'http://tis.nhai.gov.in/TollInformation?TollPlazaID=236'
uClient = uReq(my_url)
page1_html = uClient.read()
uClient.close()
#html parsing
page1_soup = soup(page1_html,"html.parser")

filename = "TollDetail12.csv"
f = open(filename,"w")
headers = "ID, tollname, location, highwayNumber\n"
f.write(headers)

#grabing data
containers = page1_soup.findAll("div",{"class":"PA15"})
for container in containers:
    toll_name = container.p.b.text

    search1 = container.findAll('b')
    highway_number = search1[1].text

    location = list(container.p.descendants)[10]
    ID = my_url[my_url.find("?"):]
    mystr = ID.strip("?")
    print("ID: " + mystr)
    print("toll_name: " + toll_name)
    print("location: " + location)
    print("highway_number: " + highway_number)
        

    f.write(mystr + "," + toll_name + "," + location + "," + highway_number.replace(",","|") + "\n")
f.close()

person Prashant    schedule 02.09.2017    source источник
comment
вставить данные в postgresql прочитайте это. Это поможет вам решить вашу проблему.   -  person Anurag Misra    schedule 02.09.2017


Ответы (1)


Вам необходимо установить пакет psycopg2 pip. Кроме того, отредактируйте файл с информацией о вашем проекте, не тестировался, но должен работать.

from urllib.request import urlopen as uReq

from bs4 import BeautifulSoup as soup

import psycopg2

my_url = 'http://tis.nhai.gov.in/TollInformation?TollPlazaID=236'
uClient = uReq(my_url)
page1_html = uClient.read()
uClient.close()
# html parsing
page1_soup = soup(page1_html, 'html.parser')

# grabing data
containers = page1_soup.findAll('div', {'class': 'PA15'})

# Make the connection to PostgreSQL
conn = psycopg2.connect(database='database_name',
                        user='user_name', password='user_password', port=5432)
cursor = conn.cursor()
for container in containers:
    toll_name = container.p.b.text

    search1 = container.findAll('b')
    highway_number = search1[1].text

    location = list(container.p.descendants)[10]
    ID = my_url[my_url.find('?'):]
    mystr = ID.strip('?')

    query = "INSERT INTO table_name (ID, toll_name, location, highway_number) VALUES (%s, %s, %s, %s);"
    data = (ID, toll_name, location, highway_number)

    cursor.execute(query, data)

# Commit the transaction
conn.commit()
person Pythonist    schedule 02.09.2017
comment
я получаю эту ошибку при запуске кода File "C:\Users\prash\AppData\Local\Programs\Python\Python36-32\lib\site-packages\psycopg2\__init__.py", line 130, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2.OperationalError: FATAL: role "prashant" is not permitted to log in - person Prashant; 02.09.2017
comment
Вам нужно изменить роль с правами входа в систему. Это можно сделать с помощью следующей команды: ALTER ROLE "prashant" WITH LOGIN; - person Pythonist; 02.09.2017
comment
Привет, можешь проверить это, пожалуйста. stackoverflow.com/questions/46025873/ - person Prashant; 03.09.2017
comment
Привет, не могли бы вы помочь мне найти это решение stackoverflow.com/questions/46052939/ - person Prashant; 05.09.2017