2017-01-23 26 views
1

私は複数のページを持つサブカテゴリを持つウェブサイトのいくつかのリンクを取得するためにリストを反復しようとしています。サブカテゴリ内の最初のリンクはリスト(8)の最初の番号を持ち、2番目のリンクは6などとなります。私の最終的な結果は次のようになりたい:forループでitarateしようループ反復リスト

sublinks: 
0 https://messageboards.webmd.com/family-pregnancy/f/relationships/ 
1 https://messageboards.webmd.com/family-pregnancy/f/parenting/ 
2 https://messageboards.webmd.com/family-pregnancy/f/pets/ 
3 https://messageboards.webmd.com/family-pregnancy/f/pregnancy/ 

リスト:[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 x in range(1, j+1): 
     url_pages = link + '#pi157388622=' + str(j) 
     page_links.append(url_pages) 

マイ最初の反復のための最終的な結果は次のようになりたい:

https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=1 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=2 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=3 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=4 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=5 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=6 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=7 
https://messageboards.webmd.com/family-pregnancy/f/relationships/#pi157388622=8 
+3

あなたの質問は何ですか?現在動作していないのは何ですか?あなたのリスト(「反復しようとするリスト」)は、あなたの望む(「見た目にしたい」)例(1、2、3、4 ...)とは異なる数字(8,6,5,14 ...) 。なんでしょう? –

+0

リスト内の数値の範囲内で反復するforループを作成したいとします。例えば、最初のものは1〜8の範囲内にある。 2番目はサブカテゴリから2番目のリンクを取得し、1〜6の間を白で表示します – Data1234

+0

あなたの質問は何ですか?どの部分が機能していないのですか?それは何ですか?それは何をすべきか? – wwii

答えて

0

あなたの問題はあなたが外(初期リスト内の番号に1から行くの繰り返しを得ることができないということであれば、あなたのコードサンプル)、次のようなものを試すことができます:

sub_links = [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] 
for length in sub_links: 
    for number in range(1, length + 1): 
     print(number, end=' ') 
    print() 

これは現在、各行に必要なすべての番号を表示します。あなたのリンクに数字を追加するために内側のforループ本体を調整し、あなたが何をしているのかを確認します。

あなたの質問が他のものに関するものであれば、より明確にする必要があります。問題の内容を説明し、問題の内容を説明することをお勧めします。

+0

ありがとうございました。私は次回 – Data1234