в python - как сохранить мульти HTML исходный код в один текстовый файл - PullRequest
3 голосов
/ 01 августа 2020

У меня есть список ссылок (хранится в файле links.txt)

Этот код может сохранить результат одной ссылки, но я не знаю, как заставить его загрузить ВСЕ исходные коды из ВСЕ ссылок внутри (links.txt) и СОХРАНИТЬ ИХ КАК ОДИН текстовый файл для следующего шага обработки ...

import urllib.request    
urllib.request.urlretrieve("https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=1", "result.txt")

Примеры ссылок образуют ссылки .txt

https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=1
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=2
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=3
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=4
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=5
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=6
https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn=7
....

Ответы [ 2 ]

4 голосов
/ 01 августа 2020

urllib

import urllib.request

with open('links.txt', 'r') as f:
    links = f.readlines()

for link in links:
    with urllib.request.urlopen(link) as f:
        # get html text
        html = f.read().decode('utf-8')

        # append html to file
        with open('result.txt', 'w+') as f:
            f.write(html)

запросов

вы также можете использовать библиотеку запросов, которую я считаю гораздо более читаемой

pip install requests
import requests

with open('links.txt', 'r') as f:
    links = f.readlines()

for link in links:
    response = requests.get(link)
    html = response.text

    # append html to file
    with open('result.txt', 'w+') as f:
    f.write(html)

Используйте l oop для навигации по страницам

Используйте для l oop для создания ссылок на страницы, поскольку единственное, что изменяется, - это номер страницы

links = [
  f'https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn={n}'
  for n in range(1, 10) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
]

или как вы go по

for n in range(1, 10):
  link = f'https://www.ebay.com/sch/i.html?_from=R40&_nkw=abc&_sacat=0&_pgn={n}'

  [...]
2 голосов
/ 01 августа 2020

На самом деле, обычно лучше использовать requests lib, поэтому вам следует начать с его установки:

pip install requests

Тогда я предлагаю прочитать links.txt построчно, скачать все нужные вам данные и сохраните их в файле output.txt:

import requests

data = []
# collect all the data from all links in the file 
with open('links.txt', 'r') as links:
    for link in links:
        response = requests.get(link)
        data.append(response.text)

# put all collected to a single file
with open('output.txt', 'w+') as output:
    for chunk in data:
        print(chunk, file=output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...