Конструкция page = requests.get(переменная из цикла) при переборе из цикла дает левую ссылку
Пишу парсер. Не работает конструкция вида. Ссылка в line - на 100% корректная. Если убираю цикл и запускаю get напрямую с нужной ссылкой - все работает как нужно. При моем коде же возвращается пустой список. Он почему-то вообще какую-то левую страницу нужного мне сайта начинает обрабатывать, хотя ссылка 100% передается верная.
Поиск в гугле дал информацию только о бессмысленной задержке, которая вроде как нужна, но это не подходит в моем случае, page = requests.get(line) - творит какую-то дичь и BeautifulSoup дает мне какую-то другую страницу, вместо нужной (вроде главную, но не уверена).
Пробовала менять .content на .text - это вообще ни на что не влияет, да и в документации я ничего не нашла про эти методы через поиск.
with open("collection_urls.txt", encoding = 'utf-8') as file:
for line in file:
page = requests.get(line)
#page = requests.get("здесь моя ссылка, которая на 100% идентична ссылки в line")
urls = BeautifulSoup(page.content, "html.parser")
collections_urls = urls.findAll("a", class_='product-name ps')
print(collections_urls)
Ответы (1 шт):
Это происходит потому что for line in file дает вам строки такого типа:
https://goole.com/?q=query\n
https://yandex.ru\n
и вот из-за этого \n (перевода строки) сайт не очень понимает что вы от него хотите.
Чтобы это исправить:
for line in file:
url = line.rstip()
page = requests.get(line)
# ну и дальше ваш код