Skip to content

Commit

Permalink
final steps
Browse files Browse the repository at this point in the history
  • Loading branch information
let-robots-reign committed Aug 23, 2018
1 parent d9813aa commit 37e7d87
Show file tree
Hide file tree
Showing 8 changed files with 320 additions and 16 deletions.
28 changes: 26 additions & 2 deletions avito_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,37 @@
import pytesseract
import os
import sys
from database import DataBase

# на каких записях останавливаться
with open("breakpoints/avito.txt", "r", encoding="utf8") as file:
break_apartment, break_cottage, break_land, break_commercial = [tuple(x.strip().split("--")) for x in
file.readlines()]
breakpoints = file.readlines()
try:
break_apartment = tuple(breakpoints[0].strip().split("--"))
except:
break_apartment = None
try:
break_cottage = tuple(breakpoints[1].strip().split("--"))
except:
break_cottage = None
try:
break_land = tuple(breakpoints[2].strip().split("--"))
except:
break_land = None
try:
break_commercial = tuple(breakpoints[3].strip().split("--"))
except:
break_commercial = None
print(break_apartment, break_cottage, break_land, break_commercial)

chrome_driver = os.getcwd() + "\\chromedriver.exe"

db = DataBase()
db.create_table("avito_apartments")
db.create_table("avito_cottages")
db.create_table("avito_lands")
db.create_table("avito_commercials")


def get_html(url):
req = requests.get(url, headers={"User-Agent": UserAgent().chrome})
Expand Down Expand Up @@ -429,6 +452,7 @@ def crawl_page(first_offer, html, category):
with open("total_data.txt", "a", encoding="utf8") as file:
file.write("%s--%s--%s\n" % (data[0], data[3], url))

db.insert_data("avito_%s", data)
print(data)

except Exception as e:
Expand Down
7 changes: 7 additions & 0 deletions cian_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
from database import DataBase

chrome_driver = os.getcwd() + "\\chromedriver.exe"

db = DataBase()
db.create_table("cian_apartments")
db.create_table("cian_cottages")
db.create_table("cian_commercials")


def get_html(url):
req = requests.get(url, headers={"User-Agent": UserAgent().chrome})
Expand Down Expand Up @@ -375,6 +381,7 @@ def crawl_page(html, category, sell_type):
return True

data.insert(1, sell_type)
db.insert_data("cian_%s" % category, data)
print(*data, sep="\n")
print("--------------------------------------")

Expand Down
142 changes: 142 additions & 0 deletions database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
import mysql.connector
from mysql.connector import Error

host = "localhost"
database = "testdb"
user = "root"
password = "root"


class DataBase:
def __init__(self):
try:
self.conn = mysql.connector.connect(host=host, database=database, user=user, password=password)
self.cursor = self.conn.cursor()
except Error as error:
print("Error while connecting to database", error)

def create_table(self, category):
if category == "avito_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS avito_apartments "
"(Адрес TEXT, Тип_сделки TEXT, Тип_дома TEXT, Количество_комнат TEXT, Этаж TEXT, "
"Количество_этажей TEXT, Общая_площадь TEXT, Площадь_кухни TEXT, Жилая_площадь TEXT, "
"Цена TEXT, Право_собственности TEXT, Фото TEXT, Описание TEXT, Имя_продавца TEXT, "
"Телефон TEXT)")
elif category == "avito_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS avito_cottages "
"(Адрес TEXT, Тип_сделки TEXT, Материал_стен TEXT, Количество_этажей TEXT, "
"Общая_площадь TEXT, Площадь_участка TEXT, Цена TEXT, Расстояние_до_города TEXT, "
"Право_собственности TEXT, Фото TEXT, Описание TEXT, Имя_продавца TEXT, "
"Телефон TEXT)")
elif category == "avito_lands":
self.cursor.execute("CREATE TABLE IF NOT EXISTS avito_lands "
"(Адрес TEXT, Тип_сделки TEXT, Залог TEXT, Категория_участка TEXT, "
"Расстояние_до_города TEXT, Площадь_участка TEXT, Цена TEXT, Право_собственности TEXT, "
"Фото TEXT, Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")
elif category == "avito_commercials":
self.cursor.execute("CREATE TABLE IF NOT EXISTS avito_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Залог TEXT, Тип_объекта TEXT, Класс_здания TEXT, "
"Общая_площадь TEXT, Цена TEXT, Право_собственности TEXT, Фото TEXT, "
"Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")

elif category == "irr_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS irr_apartments "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Материал_стен TEXT, Количество_комнат TEXT, "
"Этаж TEXT, Общая_площадь TEXT, Площадь_кухни TEXT, Жилая_площадь TEXT, Отделка TEXT, "
"Право_собственности TEXT, Фото TEXT, Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")
elif category == "irr_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS irr_cottages "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Общая_площадь TEXT, Материал_стен TEXT, "
"Количество_этажей TEXT, Площадь_участка TEXT, Категория_участка TEXT, Удобства TEXT, "
"Фото TEXT, Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")
elif category == "irr_commercials":
self.cursor.execute("CREATE TABLE IF NOT EXISTS irr_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_объекта TEXT, Парковка TEXT, "
"Высота_потолков TEXT, Общая_площадь TEXT, Право_собственности TEXT, "
"Фото TEXT, Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")

elif category == "kvardat_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_apartments "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Количество_комнат TEXT, "
"Общая_площадь TEXT, Количество_этажей TEXT, Материал_стен TEXT, Тип_продажи TEXT, "
"Фото TEXT, Описание TEXT, Телефон TEXT, Дата TEXT)")
elif category == "kvadrat_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_cottages "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Общая_площадь TEXT, "
"Тип_продажи TEXT, Материал_стен TEXT, Фото TEXT, Описание TEXT, "
"Телефон TEXT, Дата TEXT)")
elif category == "kvadrat_commercials":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_объекта TEXT, Фото TEXT, "
"Описание TEXT, Телефон TEXT, Дата TEXT)")
elif category == "kvadrat_dachas":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Расстояние_до_города TEXT, Общая_площадь TEXT,"
" Фото TEXT, Описание TEXT, Телефон TEXT, Дата TEXT)")
elif category == "kvadrat_lands_saratov":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Общая_площадь TEXT,"
" Фото TEXT, Описание TEXT, Телефон TEXT, Дата TEXT)")
elif category == "kvadrat_lands_region":
self.cursor.execute("CREATE TABLE IF NOT EXISTS kvadrat_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Расстояние_до_города TEXT, Общая_площадь TEXT,"
" Фото TEXT, Описание TEXT, Телефон TEXT, Дата TEXT)")

elif category == "ya_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS ya_apartments "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Количество_комнат TEXT, "
"Общая_площадь TEXT, Количество_этажей TEXT, Материал_стен TEXT, Год_постройки TEXT, "
"Тип_продажи TEXT, Фото TEXT, Описание TEXT, Право_собственности TEXT, Телефон TEXT, "
"Дата TEXT)")
elif category == "ya_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS ya_cottages "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Общая_площадь TEXT, "
"Площадь_участка TEXT, Удобства TEXT, Год_постройки TEXT, Тип_продажи TEXT, "
"Фото TEXT, Описание TEXT, Телефон TEXT, Дата TEXT)")
elif category == "ya_commercials":
self.cursor.execute("CREATE TABLE IF NOT EXISTS ya_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_объекта TEXT, Мебель TEXT, "
"Вход TEXT, Доп_информация TEXT, Телефон TEXT, Дата TEXT)")

elif category == "cian_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS cian_apartments "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Количество_комнат TEXT, "
"Общая_площадь TEXT, Количество_этажей TEXT, Материал_стен TEXT, Год_постройки TEXT, "
"Тип_продажи TEXT, Фото TEXT, Описание TEXT, Право_собственности TEXT, Дата TEXT, "
"Телефон TEXT)")
elif category == "cian_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS cian_cottages "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_дома TEXT, Общая_площадь TEXT, "
"Материал_стен TEXT, Площадь_участка TEXT, Категория_участка TEXT, Удобства TEXT, "
"Год_постройки TEXT, Тип_продажи TEXT, Фото TEXT, Описание TEXT, Дата TEXT, "
"Телефон TEXT)")
elif category == "cian_commercials":
self.cursor.execute("CREATE TABLE IF NOT EXISTS cian_commercials "
"(Адрес TEXT, Тип_сделки TEXT, Цена TEXT, Тип_объекта TEXT, Класс_здания TEXT,"
"Этаж TEXT, Мебель TEXT, Вход TEXT, Фото TEXT, Описание TEXT, Дата TEXT, Телефон TEXT)")

elif category == "youla_apartments":
self.cursor.execute("CREATE TABLE IF NOT EXISTS youla_apartments "
"(Адрес TEXT, Цена TEXT, Тип_сделки TEXT, Материал_стен TEXT, Лифт TEXT, "
"Год_постройки TEXT, Количество_комнат TEXT, Этаж TEXT, Количество_этажей TEXT, "
"Общая_площадь TEXT, Площадь_кухни TEXT, Ремонт TEXT, Право_собственности TEXT, "
"Фото TEXT, Описание TEXT, Имя_продавца TEXT, Телефон TEXT)")
elif category == "youla_cottages":
self.cursor.execute("CREATE TABLE IF NOT EXISTS cian_cottages "
"(Адрес TEXT, Цена TEXT, Тип_сделки TEXT, Тип_дома/Участок TEXT, Общая_площадь TEXT, "
"Материал_стен TEXT, Количество_этажей TEXT, Количество_спален TEXT, "
"Площадь_участка TEXT, Категория_участка TEXT, Удобства TEXT, Фото TEXT, Описание TEXT,"
" Телефон TEXT)")

elif category == "dublicates":
self.cursor.execute("CREATE TABLE IF NOT EXISTS dublicates (Заголовок TEXT, URL TEXT)")

def insert_data(self, table_name, data):
data_string = ', '.join(['%s'] * len(data))
query = "INSERT INTO %s VALUES (%s);" % (table_name, data_string)
self.cursor.execute(query, tuple(data))
self.conn.commit()


db = DataBase()
db.create_table("avito_apartments")
37 changes: 34 additions & 3 deletions irr_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,37 @@
from fake_useragent import UserAgent
import datetime
import base64
from database import DataBase


# на каких записях останавливаться
with open("breakpoints/irr.txt", "r", encoding="utf8") as file:
break_apartment_sell, break_apartment_rent, break_commercials_sell, break_commercial_rent, break_cottage_sell, break_cottage_rent = [
tuple(x.strip().split("--")) for x in file.readlines()]
breakpoints = file.readlines()
try:
break_apartment_sell = tuple(breakpoints[0].strip().split("--"))
except:
break_apartment_sell = None
try:
break_apartment_rent = tuple(breakpoints[1].strip().split("--"))
except:
break_apartment_rent = None
try:
break_commercial_sell = tuple(breakpoints[2].strip().split("--"))
except:
break_commercial_sell = None
try:
break_commercial_rent = tuple(breakpoints[3].strip().split("--"))
except:
break_commercial_rent = None
try:
break_cottage_sell = tuple(breakpoints[4].strip().split("--"))
except:
break_cottage_sell = None
try:
break_cottage_rent = tuple(breakpoints[5].strip().split("--"))
except:
break_cottage_rent = None

# получаем вчерашнюю дату
today = datetime.datetime.today()
yesterday = str(today - datetime.timedelta(days=2)).split()[0].split("-")
Expand All @@ -34,6 +59,11 @@
}
date_break_point = yesterday[2] + " " + months[yesterday[1]]

db = DataBase()
db.create_table("irr_apartments")
db.create_table("irr_cottages")
db.create_table("irr_commercials")


def get_html(url):
req = requests.get(url, headers={"User-Agent": UserAgent().chrome})
Expand Down Expand Up @@ -363,12 +393,13 @@ def crawl_page(first_offer, html, category, sell_type):

key_info = (data[0], data[1])

if any(x == key_info for x in [break_apartment_sell, break_apartment_rent, break_commercials_sell,
if any(x == key_info for x in [break_apartment_sell, break_apartment_rent, break_commercial_sell,
break_commercial_rent, break_cottage_sell, break_cottage_rent]):
print("Парсинг завершен")
return True

data.insert(1, sell_type)
db.insert_data("irr_%s" % category, data)
print(data)

except Exception as e:
Expand Down
Loading

0 comments on commit 37e7d87

Please sign in to comment.