Python Заменить локальные ссылки скаченной страницы на оригиналы веб
Всем привет. Суть задачи: Сайт скачивается на компьютер при помощи модуля pywebcopy
Собственно он предназначен для того что бы выкачивать страницы вместе с разметкой.
Нужно это для особого колдовства, и колдовство у меня получилось (я буквы крашу в хтмле).
Но есть проблема. После того как сайт упал на компьютер все ссылки в нем заменились на локальные. И теперь вопрос - как заставить сайт обращаться за данными к серверу?
Я уже что только не перепробовал. А нихрена не получается.
Помогите пожалуйста! )
Код для ознакомления (вдруг вам захочется посмотреть)
class WebRework(object):
def __init__(self,url):
global words, FORMAT
global trash_symbs, allowedshorts, restricted, trashset, common
global LYN, local_libraries_pool,OPERATIONS
ENCODIN= "utf-8, deflate"
ACCEPT = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
DNT = "1"
CON = "close"
INSEC ="1"
LANG = "ru-RU,ru;q=0.5"
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0"
link=url
headers = {"user-agent" : USER_AGENT, "Accept-Language": LANG, "Accept-Encoding": ENCODIN, "DNT": DNT, "Connection": CON, "Accept":ACCEPT, "Upgrade-Insecure-Requests":INSEC}
cookies = browser_cookie3.chrome(domain_name=link.split("/")[2])
r2 = requests.get(link,headers=headers, verify=True, cookies=cookies, timeout=3)
new_replacer_bs = BeautifulSoup(r2.text,'html.parser')
new_group = new_replacer_bs.find_all("a")
r = requests.get(url) #url - ссылка
html1 = r.text
urltest = url
download_folder = '/test1/'
testurl=url.split("/")[2]
all_links_source=soup3.find_all('a')
all_links=[]
for link in all_links_source:
if 'href' in str(link):
all_links+=[str(testurl)+"?@#S"+link['href']]
else:
all_links+=['placeholder']
kwargs = {'bypass_robots': True, 'project_name': 'testing', 'open_in_browser':False}
save_webpage(urltest, download_folder, **kwargs)
arr=glob.glob(r"C:\test1\**\**\**\*.html")
print(arr)
x = [page for page in arr if 'index' in page]
html1=""
with open(x[0], "r", encoding="utf-8") as f:
html1=f.read()
html1=html1.encode('utf-8')
with open('122223.html', "w", encoding="utf-8") as f:
f.write(html1.decode('utf-8'))
#f.close()
#print("1"+1)
soup2 = BeautifulSoup(r2.text, 'lxml')
words_soup_finder = soup2.find_all('p')
paragraphs=[]
paragraphs_edited=[]
words_soup=""
for x in words_soup_finder:
words_soup+=" "+x.get_text()
paragraphs+=[x]
paragraphs_edited+=[x]
words_soup=words_soup.replace('\n'," ")
words_soup=words_soup.replace(u"_"," ")
words_soup=words_soup.replace(u"\xa0"," ")
words_soup=words_soup.replace(u"\\xa0"," ")
words_soup=words_soup.replace(u"\\xa"," ")
words_soup=words_soup.replace(u"\u2009"," ")
for trash in trash_symbs:
words_soup=words_soup.replace(trash,"")
words_soupx=set(words_soup.split(" "))
for x in words_soupx:
words_soup+=" "+x
string=html1.decode('utf-8')
string = html.unescape(string)
rep_orig = BeautifulSoup(string,'html.parser')
rep_orig_all = rep_orig.find_all("a")
tempword=""
tempword1=""
indexer=0
indeyer=len(words_soupx)
p_array=[]
test=0
format_dict=dict()
for words in words_soupx:
if len(words)<2:
continue
tempword=""
for letter in words:
try:
tempword+=FORMAT[str(letter)].get()
except KeyError:
tempword+=letter
format_dict[words]=tempword
print(format_dict[words])
print(words)
indexer+=1
print(f"{indexer}/{indeyer}")
with open('122223.html', "w", encoding="utf-8") as f:
f.write(string)