Здравствуйте!
Возможно, получу бан, а возможно, и помощь. А может, кто вообще захочет рассмотреть всю проблему за символическое вознаграждение.
Итак, вкратце. Я коллекционирую монеты и для своего каталога мне надо получать данные по ним с двух сайтов. Но - один на русском языке, другой на английском ( то есть нужен перевод русского запроса)
Запросы в файле, выглядят так:
Читаю файл и получаю список запросов:
Работаю с полученным списком и получаю список страниц с данными по запросам. Точнее, должен получать, если бы переводчик работал (хотя до вчерашнего дня работал, да, переводил не все валюты, но сейчас вообще спотыкается чуть ли не на каждой):
Пока так. Далее утомлять не буду, если кого заинтересует проблема и знаете решение, пишите. Далее у меня регулярные выражения и получение текста по тегам элементов, которое тоже не работает адекватно.
Возможно, получу бан, а возможно, и помощь. А может, кто вообще захочет рассмотреть всю проблему за символическое вознаграждение.
Итак, вкратце. Я коллекционирую монеты и для своего каталога мне надо получать данные по ним с двух сайтов. Но - один на русском языке, другой на английском ( то есть нужен перевод русского запроса)
Запросы в файле, выглядят так:
Код:
"Болгария","10 стотинок","1992","","Болгарский лев","","","40.00","KM# 199","","
"Болгария","20 стотинок","1992","","Болгарский лев","","","56.00","KM# 200","",""
"Украина","1 гривна","2020","","Украинская гривна","","","3.00","UC# 5","",""
"Румыния","10 бань","2008","","Румынский лей","","","","KM# 191","","Монеты мира. Европа"
"Румыния","50 бань","2008","","Румынский лей","","","","KM# 192","",""
Читаю файл и получаю список запросов:
Код:
# Импорт модулей
import requests
from bs4 import BeautifulSoup
import re
from google_trans_new import google_translator
from pathlib import Path
# Импорт моих файлов
import dict as d
# Переменные
HEADERS = {
'accept': '*/*',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0',
'Upgrade-Insecure-Requests': '1'
}
ls = ('Страна', 'Номер по каталогу', 'Период', 'Номинал', 'Валюта', 'Год',
'Дата на монете', 'Годы выпуска', 'Изъяты из обращения', 'Диаметр', 'Вес', 'Толщина',
'Материал', 'Гурт', 'Форма монеты', 'Расположение аверса к реверсу', 'Дизайнер реверса',
'Дизайнер аверса', 'Тип выпуска', 'Повод выпуска', 'Монетный двор', 'Тираж', 'Текст реверса'
'Текст аверса', 'Текст гурта')
def open_import_txt():
a=[]
sch=[]
f = Path('D://Documents//Coins//UCoin Cat//Import.txt')
if f.is_file():
with open('D://Documents//Coins//UCoin Cat//Import.txt', "r", encoding='utf-8') as f:
for line in f:
if not line.isspace():
a.append(line.replace('\n', ''))
f.close()
for i in range(len(a)):
a2 = a[i].split(',')
if re.search(r'(KM|Y).*', a2[8]):
a3 = a2[0] + a2[1] +re.sub(r'(\d{4}\s).*', r'\1', a2[2]) + a2[8]
a4 = a2[0] + a2[1] +re.sub(r'(\d{4}\s).*', r'\1', a2[2]) + a2[8]
else:
a3 = ''
a4 = ''
a3 = a3.replace ('""', ' ')
a3 = a3.replace ('"', '')
a4 = a4.replace ('""', ' ')
a4 = a4.replace ('"', '')
sch.append ([a3 , a4])
sch = list(filter(None, sch))
return sch
else:
print ('Файла для импорта нет по указанному пути')
return 0
Работаю с полученным списком и получаю список страниц с данными по запросам. Точнее, должен получать, если бы переводчик работал (хотя до вчерашнего дня работал, да, переводил не все валюты, но сейчас вообще спотыкается чуть ли не на каждой):
Код:
def get_link(domain):
links=[]
sch = open_import_txt()
if sch != 0:
host = 'https://' + domain
session = requests.Session()
for i in range(len(sch)):
if domain == 'ru.ucoin.net':
url = (host + '/catalog/?')
search = sch[i]
yahr = re.search (r'\d{4}', search[0])
r = session.get(url, headers=HEADERS, params=[('q', search[0])])
if r.status_code == 200:
sp = BeautifulSoup(r.text, 'html.parser')
try:
link = sp.find('table', {'class': 'coin'}).find('a').get('href')
request = session.get(host + link, headers=HEADERS)
sp2 = BeautifulSoup(request.content, 'html.parser')
table = sp2.find_all('tr', {"class": "tr-hr"})
if table:
link = ''
for s in table:
if yahr.group(0) in s['data-href']:
link = host + s['data-href']
else:
link = host + link
except AttributeError:
link = "Нет результата поиска, надо делать вручную"
else:
print('Ошибка получения ссылки!')
links.append(link)
else:
url = (host + '/catalogue/index.php?')
translator = google_translator()
search = sch[i]
search = translator.translate(search[1], lang_src='ru', lang_tgt='en')
r = session.get(url, headers=HEADERS, params=[('r', search)])
if r.status_code == 200:
link = ''
sp = BeautifulSoup(r.text, 'html.parser')
try:
link = sp.find('div', {'class': 'description_piece'}).find('a').get('href')
link = host + link
except AttributeError:
link = "Нет результата поиска, надо делать вручную"
else:
print('Ошибка получения ссылки!')
links.append(link)
return links
Пока так. Далее утомлять не буду, если кого заинтересует проблема и знаете решение, пишите. Далее у меня регулярные выражения и получение текста по тегам элементов, которое тоже не работает адекватно.