@ibmwatson

Python 3 — как брать ссылки из файла с удалением и отправлять на них get запрос?

Всем привет, уже сколько перерыл и ни как не могу сообразить как всё же брать ссылки из файла.
Задача такова, есть файл в котором n-ое кол-во строк, нужно из этого файла взять ссылки, после чего на каждую ссылку отправить гет запрос, гет запрос у меня находится в отдельной функции:
import requests
from bs4 import BeautifulSoup as bs

headers = {'accept': '*/*',
		   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 OPR/65.0.3467.62'}

def my_parse(base_url, headers):
	session = requests.Session()
	request = session.get(base_url, headers=headers)
	if request.status_code == 200:
		soup = bs(request.content, 'html.parser')
		titleTag = soup.find('span', attrs={'name'})
		price = soup.find('span', attrs={'final-cost'})
		stars = soup.find('p', attrs={'stars-line-lg'})
		stars_str = str(stars.text)
		kol_vo_otzivov = soup.find(id="a-Comments")
		kol_vo_otzivov_str = str(kol_vo_otzivov.text)
		kolvo_otzivov = kol_vo_otzivov_str.replace('Отзывы', 'Количество отзывов:')
		print ('\n','Название товара:',titleTag.text,'\n','Цена товара:',price.text.strip(),'\n','Оценка товара:',stars_str.strip(),'\n',kolvo_otzivov)
	else:
		print('Мы не получили статус 200, Ошибка')

my_parse(base_url, headers)


Как всё же в переменную base_url, передать ссылку на товар из файла, а так же что бы эта ссылка удалилась из файла, файл в формате .txt?
Ребят, помогите пожалуйста, уже не знаю что и делать, Python только начинаю изучать ...
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@anerev
Я сам не очень профи) но что-то в этом духе:
with open("text.txt", 'r') as file:
    list = [line.strip() for line in file]
    list2 = []
    for URL in list:
        my_parse(URL, headers)
        list2.append(URL)
for remList in list2:
    list.remove(remList)
with open("text.txt", 'wb') as file:
    for line in list:
        file.wrie(line + '\n')

Вроде так, но надо проверить
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы