Найти - Пользователи
Полная версия: сграбить index.php
Начало » Data Mining » сграбить index.php
1
zlodiak
помогите пожалуйста разобраться с ошибкой

следующим скриптом успешно загружаю из сети файл index.html и успешно записываю его в текстовый файл(сам скрипт находится на жёстком диске):
import requests
addr = requests.get('http://fh79272k.bget.ru/py_test/index.html')
#addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php')
print(addr.status_code)
print(addr.text)
try:
    f2 = open("text2.txt", 'w')
except Exception:
    print('open error')
except:
    print('error')
else:
    try:
        f2.write(addr.text)
    except Exception:
        print('write error')
    except:
        print('error')
    else:
        print('write OK')
finally:    
    f2.close()

следующим скриптом успешно загружаю из сети файл index.html и НЕуспешно записываю его в текстовый файл:
import requests
#addr = requests.get('http://fh79272k.bget.ru/py_test/index.html')
addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php')
print(addr.status_code)
print(addr.text)
try:
    f2 = open("text2.txt", 'w')
except Exception:
    print('open error')
except:
    print('error')
else:
    try:
        f2.write(addr.text)
    except Exception:
        print('write error')
    except:
        print('error')
    else:
        print('write OK')
finally:    
    f2.close()

сообщение об ошибке такое:
write error

непонятно почему не получается записать html-разметку при помощи второго скрипта. на экран она выводится в обоих случаях




alexsis
попробуйте записывать так:

f2.write(addr.text.encode('utf-8'))
PanovSergey
Вы сами себе злобный буратино
уберите эту хрень
except Exception:
        print('write error')
    except:
        print('error')
и увидите какой реально exception упал
zlodiak
PanovSergey
Вы сами себе злобный буратино уберите эту хрень

убрал. при следующем коде
import requests
#addr = requests.get('http://fh79272k.bget.ru/py_test/index.html')
addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php')
print(addr.status_code)
print(addr.text)
try:
    f2 = open("text2.txt", 'w')
except Exception:
    print('open error')
except:
    print('error')
else:
    f2.write(addr.text)
finally:    
    f2.close()

сообщение об ошибке такое:
Traceback (most recent call last):
File “C:\VINT\OPENSERVER\OpenServer\domains\localhost\python\parse_html\1\dombook.py”, line 16, in <module>
f2.write(addr.text)
File “C:\Python33\lib\encodings\cp1251.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)
UnicodeEncodeError: ‘charmap’ codec can't encode characters in position 87-91: character maps to <undefined>
pyuser
Подозреваю, что requests не смог определить кодировку страницы и выставил ISO-8859-1
Попробуйте изменить функцию get_encoding_from_headers в файле requests.utils, закоментируйте две последние строки функции.
Но правильнее все же писать в файл байты:
with open("text.html", "wb") as f2:
    f2.write(addr.content)
Поскольку Вы просто сохраняете страницу, то перед записью в файл совсем не обязательно загружать ее полностью:
import shutil
import requests
addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php', stream=True)
with open("text.html", "wb") as f2:
    shutil.copyfileobj(addr.raw, f2)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB