У меня есть список ссылок (хранится в файле 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")

Пример ссылки из файла links.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
....
3
user13602012 1 Авг 2020 в 22:50

2 ответа

Лучший ответ

На самом деле, обычно лучше использовать 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)
2
Andrej Zacharevicz 4 Авг 2020 в 17:10

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)

Использовать цикл для навигации по страницам

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

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]
]

Или как вы идете

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

  [...]
4
DelphiX 1 Авг 2020 в 20:25