2017-03-11 8 views
1

は50社のリストをウェブサイトForbes Most Admired Companiesありますウェブサイトの負荷がより多くの作り方20個のアイテムを、検索して、私はそのリストを解析し、csvファイルウェブサイトのリストパーサは

コードIにそれをエクスポートしようとしています下にスクロールしたときにページが読み込まれるため、私には20人しかいません。スクロールダウンをシミュレートする方法や、それを完全にロードする方法はありますか?

from lxml import html 
import requests 

def schindler(max): # create a list of the companies 
    page = requests.get('http://beta.fortune.com/worlds-most-admired-companies/list/') 
    tempContainer = html.fromstring(page.content) 
    names = [] 
    position = 1 

    while position <= max: 
     names.extend(tempContainer.xpath('//*[@id="pageContent"]/div[2]/div/div/div[1]/div[1]/ul/li['+str(position)+']/a/span[2]/text()')) 
     position = position + 1 

    return names 

(つまり、.CSV輸出国でも問題のみリスト作成なかった)

それを私は、チェクし、それを印刷し、唯一の20項目が

print(schindler(50)) 
+1

私は、これは[無限スクロールでこすりサイト]の重複であると言うつもりです(http://stackoverflow.com/questions/12519074/scrape-websites-with-無限スクロール)、これは「静的なウェブページを読む」から「ウェブページとやりとりする」という交差点であり、残念ながら大きなステップです。 –

+0

ありがとう!私はそれをチェックします、私はpreexsiting答えを探してみましたと何も使用可能なものを見つけませんでした。おそらく、私の問題点を徹底的に述べるためのテクニカルな語彙がないので、 – Trotus

+0

という3つの関連語は[python、scraping、scrolling]でした(https://www.google.ca/search?client=safari&rls=en&q=python+scaping+scrolling&ie = UTF-8&oe = UTF-8&gfe_rd = cr&ei = KGLEWJSuL6aC8QeHyoGwDQ#q = python +スクラップ+スクロール&*)あなたは欠けていましたか? (btw私はgaldolfへのあなたの参照が好きです) –

答えて

1

リストに表示されますJSONとしてデータを取得できると思われます。 URLの20は開始するランク、30はアイテムの数です。

サンプルコード:

url = "http://fortune.com/api/v2/list/1918408/expand/item/ordering/asc/20/30" 

resp = requests.get(url) 
for entry in resp.json()['list-items']: 
    print(entry['rank'], entry['name'])                                                                 
+0

最後に番号を削除するには、['name']という項目をフォーマットする必要があります – Trotus

関連する問題