2017-05-12 10 views
-1

私はスクレーパーを実行すると、タイトルとマクロをタイトルにフェッチしてWebページを作成します。ページには、スクレイパーの2番目の「印刷」によってスクラップされている6つの新しいリンクが含まれているフッターのページ番号オプションがあります。しかし、この時点で私はこの次のページのリンクを利用することはできません。私は、関数のどこかに挿入する方法を見つけることができないので、各次のページリンクからタイトルとマクロを取得できます。何か間違いがありましたら申し訳ありません。事前に感謝していただきありがとうございます。関数内に新しく生成されたリンクを使用することはできません

import requests 
from lxml import html 

Page_link="http://www.wiseowl.co.uk/videos/" 

def GrabbingData(url): 
    base="http://www.wiseowl.co.uk" 
    response = requests.get(url) 
    tree = html.fromstring(response.text) 
    title = tree.xpath('//p[@class="woVideoListDefaultSeriesTitle"]/a/text()') 
    link = tree.xpath('//p[@class="woVideoListDefaultSeriesTitle"]/a/@href') 
    for i,j in zip(title,link): 
     print(i,j) 

    pagination=tree.xpath("//div[contains(concat(' ', @class, ' '), ' woPaging ')]//a[@class='woPagingItem' or @class='woPagingNext']/@href") 
    for nextp in pagination: 
     print(base + nextp) 

GrabbingData(Page_link) 

答えて

1

あなたは簡単にこのように、それ再帰関数行うことができます:次のページのURLのHTMLは、「戻る」のリンクが含まれていますので、私もリストvisited_linksを追加

import requests 
from lxml import html 

Page_link="http://www.wiseowl.co.uk/videos/" 
visited_links = [] 

def GrabbingData(url): 
    base="http://www.wiseowl.co.uk" 
    response = requests.get(url) 
    visited_links.append(url) 
    tree = html.fromstring(response.text) 
    title = tree.xpath('//p[@class="woVideoListDefaultSeriesTitle"]//a/text()') 
    link = tree.xpath('//p[@class="woVideoListDefaultSeriesTitle"]//a/@href') 
    for i,j in zip(title,link): 
     print(i,j) 

    pagination=tree.xpath("//div[contains(concat(' ', @class, ' '), ' woPaging ')]//a[@class='woPagingItem' or @class='woPagingNext']/@href") 
    for nextp in pagination: 
     url1 = str(base + nextp) 
     if url1 not in visited_links: 
      #print(url1) 
      GrabbingData(url1) 

if __name__ == "__main__": 
    GrabbingData(Page_link) 

、既に訪問したページに戻ることはなく、無限ループに終わることはありません。

if __name__ == "__main__": 

始まる最後の部分は、一般に、(インポートされるのとは対照的に)ファイルが直接呼び出された場合、関数を呼び出すために使用されます。

+0

あなたの効果的な解決策のおかげで貴重なルカシェ・リーハ。これはまさに私が後にしたものです。 – SIM

+0

よろしくお願いします。 –

関連する問題