вы сохраняете item
как int для l oop: for item in range(1, 3)
. Затем вы пытаетесь применить к этому .img
функцию. То, к чему вы на самом деле хотите применить, - это ваш объект Beautifulsoup soup
, вам также необходимо очистить ваш список. В одном из них вы правильно объединяете 'https:
, а в другом - нет.
Посмотрите здесь и посмотрите изменения, которые я внес в ваш код:
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"
}
def main(url):
with requests.Session() as req:
for item in range(1, 3):
print(f"Extracting Page# %s" %item)
r = req.get(url.format(item), headers=headers)
soup = BeautifulSoup(r.content, 'html.parser', from_encoding='utf-8')
if 'http' in soup.img['src']:
target = [[each.img['alt'], 'https:' + each.img["src"]]
for each in soup.select("dt.image")]
else:
target = [[each.img['alt'], 'https:' + each.img["src"]]
for each in soup.select("dt.image")]
for el in target:
print('%s.jpg' %el[0])
r = req.get(el[1])
with open('%s.jpg' %el[0], 'wb') as f:
f.write(r.content)
main("https://www.coupang.com/np/categories/311357?page={}")