Добавлять подсписок в список
В веб интерфейсе, через форму textarea подаю список ссылок (каждая ссылка с новой строки), затем начинает работать этот код:
def add(data_1):
snaruzhi = []
data_1_1 = data_1.split('\n')
schet4ik = 0
test_massive = []
test_massive1 = []
for i in data_1_1: # проход по списку url
requests.get(i)
pages = requests.get(i)
pages.text
soup = BeautifulSoup(pages.text, 'lxml')
schet4ik += 1
for tag_a in soup.find_all("a"):
for tag_a_bez_img in tag_a.find_all("img"):
tag_a_bez_img.decompose()
for tag_a_bez_h1 in tag_a.find_all("h1"):
tag_a_bez_h1.decompose()
for tag_a_bez_h2 in tag_a.find_all("h2"):
tag_a_bez_h2.decompose()
for tag_a_bez_h3 in tag_a.find_all("h3"):
tag_a_bez_h3.decompose()
for tag_a_bez_h4 in tag_a.find_all("h4"):
tag_a_bez_h4.decompose()
for tag_a_bez_h5 in tag_a.find_all("h5"):
tag_a_bez_h5.decompose()
for tag_a_bez_h6 in tag_a.find_all("h6"):
tag_a_bez_h6.decompose()
snaruzhi.append(tag_a.text.strip())
print(snaruzhi)
return snaruzhi
Сейчас это работает таким образом, как закончился первый цикл, то есть прошлись по первому url, имеем список в таком формате:
snaruzhi = ['Ссылка 1' 'Ссылка 2' 'Ссылка 3' 'Ссылка 4' 'Ссылка 5' 'Ссылка 6' ]
Но если продолжить цикл, то список будет расширяться таким образом:
snaruzhi = ['Ссылка 1' 'Ссылка 2' 'Ссылка 3' 'Ссылка 4' 'Ссылка 5' 'Ссылка 6' 'Ссылка 1 url 2' 'Ссылка 2 url 2' 'Ссылка 3 url 2' 'Ссылка 4 url 2' 'Ссылка 5 url 2' 'Ссылка 6 url 2']
Соответственно, непонятно как обратиться и вывести только список url второго сайта, или условно десятого сайта.
Говорят можно использовать вложенные списки:
snaruzhi = [[список всех тегов <a> из первого url], [список всех тегов <a> из второго url]].
Но как в цикле правильно создать и записать вложенный список? Чтобы получилась такая картина:
snaruzhi = [['Ссылка 1' 'Ссылка 2' 'Ссылка 3' 'Ссылка 4' 'Ссылка 5' 'Ссылка 6'], ['Ссылка 1 url 2' 'Ссылка 2 url 2' 'Ссылка 3 url 2' 'Ссылка 4 url 2' 'Ссылка 5 url 2' 'Ссылка 6 url 2']]
Что бы можно было обратиться по индексу:
snaruzhi[0]
- вывести все названия ссылок с первого url- ...
snaruzhi[10]
- вывести все названия ссылок с десятого url
Источник: Stack Overflow на русском