Windows добавляет кучу пробелов / новых строк в html-файл для записи в python, используя запрос - PullRequest
0 голосов
/ 28 августа 2018

Используя следующий код, я получаю один или несколько символов новой строки между каждой строкой в ​​моем файле при запуске кода в Windows (в блокноте jupyter на python3), но НЕ при работе в Mac или Linux?

Я полагаю, это какая-то проблема с кодировкой? что-то связанное с махинациями окна "/r/n"? делать; str (page.content) instead leaves me with a file full of / r / n`, как и ожидалось, но я не уверен, почему для начала написано мелом?

примечание: я прокомментировал быстрый способ удаления пробелов, но это не совсем то, что мне нужно, я больше ищу, почему пробелы добавляются для начала.

import requests

url = '/2844921/est-li-sposob-poluchit-xpath-v-google-chrome'
page=requests.get(url)

newhtml = page.text

# import re
# newhtml = re.sub(r'\s\s+', ' ', page.text)

f = open('webpage.html', 'w', encoding='utf-8')
f.write(newhtml)
f.close()

Образец результата:

<html itemscope itemtype="http://schema.org/QAPage" class="html__responsive">



<head>



    <title>Is there a way to get the xpath in google chrome? - Stack Overflow</title>

    <link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d">

    <link rel="apple-touch-icon image_src" href="https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon.png?v=c78bd457575a">

    <link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">

    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0">





    <meta property="og:type" content= "website" />

    <meta property="og:url" content="/2844921/est-li-sposob-poluchit-xpath-v-google-chrome"/>

    <meta property="og:site_name" content="Stack Overflow" />

1 Ответ

0 голосов
/ 28 августа 2018

Похоже, C14L прибил его. (как я могу дать вам интернет-баллы в качестве комментария, могу ли я сделать это только в качестве ответа, верно?)

Я переключился на f = open('webpage.html', 'wb', encoding='utf-8'), и он пожаловался

ValueError: двоичный режим не принимает аргумент кодирования

сделал так, чтобы f = open('webpage.html', 'wb') пожаловался

TypeError: требуется байтоподобный объект, а не 'str'

поэтому я переключил newhtml = page.text на newhtml = page.content и вуаля, выходной сигнал соответствует ожидаемому. Теперь, чтобы проверить и убедиться, что он не нарушает работу Mac / Linux

Окончательный функциональный код:

import requests

url = '/2844921/est-li-sposob-poluchit-xpath-v-google-chrome'
page=requests.get(url)

newhtml = page.content

f = open('webpage.html', 'wb')
f.write(newhtml)
f.close()
...