Простейшая задача повергла в ступор.
При чтении из файла, почему-то берется только последняя строка (проверено, менял местами строки), а не все строки перебираются в цикле. Странно, ведь это простейшая заготовка. Скопипастил с предыдущего проекта, никакой реакции, мало того, в прошлом проекте возникла эта же проблема. Может обновилось что за последний месяц ?
Вот сам код:
from tqdm import tqdm
import requests
from bs4 import BeautifulSoup
from random import randint
from time import sleep
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,'
'application/signed-exchange;v=b3;q=0.9',
'Accept-Language': 'en-US,en;q=0.9,ru-RU;q=0.8,ru;q=0.7,uk;q=0.6',
'Connection': 'keep-alive',
'Sec-Fetch-Dest': 'document',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-User': '?1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 '
'Safari/537.36',
'sec-ch-ua': '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Linux"',
}
def open_txt():
with open('all_links.txt', 'r') as f:
lines = [line.strip() for line in f.readlines()]
return lines
def get_data(lines):
products = []
for line in lines:
try:
q = requests.get(line, headers=headers)
except requests.ConnectionError as e:
continue
result = q.content
soup = BeautifulSoup(result, 'lxml')
# sleep(randint(1, 3))
try:
name = soup.find('div', class_='ty-product-block__left').find_next('h1', class_='ty-product-block-title').text
except AttributeError:
name = '-'
print(name)
if __name__ == "__main__":
get_data(open_txt())