2017-01-22 1 views
-2

У меня есть список ссылок, в каждом из которых есть несколько страниц. Я нашел количество страниц в каждой подкатегории, но теперь я хочу сделать цикл, чтобы перебирать все страницы субблинков. Таким образом, первая категория ссылки будет иметь 8 страниц, вторая ссылка будет иметь 6 страниц и т. Д.Ссылка на список для цикла

lists = [8, 6, 5, 13, 10, 16, 13, 15, 4, 4, 5, 7, 2, 6, 6, 8, 9, 8, 3, 8, 8, 1, 6, 3, 2, 15, 5, 4, 2, 12, 18, 5, 2] 

import bs4 as bs 
import urllib.request 
import pandas as pd 
import urllib.parse 
import re 


#source = urllib.request.urlopen('https://messageboards.webmd.com/').read() 
source = urllib.request.urlopen('https://messageboards.webmd.com').read() 
soup = bs.BeautifulSoup(source,'lxml') 


df = pd.DataFrame(columns = ['link'],data=[url.a.get('href') for url in soup.find_all('div',class_="link")]) 
lists =[] 
lists2=[] 
lists3=[] 
page_links = [] 


for i in range(0,33): 
    link = (df.link.iloc[i]) 
    req = urllib.request.Request(link) 
    resp = urllib.request.urlopen(req) 
    respData = resp.read() 
    temp1=re.findall(r'Filter by</span>(.*?)data-pagedcontenturl',str(respData)) 
    temp1=re.findall(r'data-totalitems=(.*?)data-pagekey',str(temp1))[0] 
    pageunm=round(int(re.sub("[^0-9]","",temp1))/10) 
    lists.append(pageunm) 


for j in lists: 
    for y in range(1, j+1): 
     url_pages = link + '#pi157388622=' + str(j) 
     page_links.append(url_pages) 
+0

Таким образом, для каждого 'j' вы хотите перебрать' диапазоне (1, J + 1) '? – jonrsharpe

ответ

1

Используйте вложенный цикл:

for i in lists: # [8, 6, 5, etc] 
    # now use i for the inner loop 
    for j in range(1, i+1): # [1-8], [1-6], [1-5], etc 
     url_pages = link + '#pi157388622=' + str(j) 
     # do sth with url_pages, or it'll be just overwritten each iteration 
+0

Не могли бы вы подробнее объяснить, что вы подразумеваете под своим последним комментарием? Вы имеете в виду ввести их в другой список? – Data1234

+0

@ Data1234 ну, оператор 'url_pages = foo' присваивает значение локальной переменной' url_pages', но ничего не делает. В следующей итерации цикла это значение будет потеряно, потому что 'url_pages' будет переназначать новое значение. Следовательно, вы должны сделать это. с ним, например, печать или добавление его в список ... – schwobaseggl

+0

не работает. Однако я не объяснил свое право. – Data1234

 Смежные вопросы

  • Нет связанных вопросов^_^