2016-12-14 17 views
0

私はpythonを使用してWebページを読み込み、csv形式でデータをpandasデータフレームとしてインポートしようとしています。特定のWebページから特定の列を抽出します

私はすべてのページからリンクを抽出する代わりに、特定の列フィールドを読み込もうとしています。

for i in range(10): 
    url='https://pythonexpress.in/workshop/'+str(i).zfill(3) 
    import urllib2 
    from bs4 import BeautifulSoup 
    try: 
     page = urllib2.urlopen(url).read() 
     soup = BeautifulSoup(page) 
     for anchor in soup.find_all('div', {'class':'col-xs-8'})[:9]: 
      print i, anchor.text 
    except: 
     pass 

これらの9列をpandasデータフレームとして保存できますか?

df.columns=['Organiser', 'Instructors', 'Date', 'Venue', 'Level', 'participants', 'Section', 'Status', 'Description'] 
+0

結果から関心のある列をサブ選択することはできませんか?例えば'df = df [cols_I want]' – EdChum

答えて

1

これは、最初の10ページについて正しい結果を返しますが、100ページに多くの時間がかかります。それをより速くするための提案はありますか?

import urllib2 
from bs4 import BeautifulSoup 

finallist=list() 
for i in range(10): 
    url='https://pythonexpress.in/workshop/'+str(i).zfill(3) 
    try: 
     page = urllib2.urlopen(url).read() 
     soup = BeautifulSoup(page) 
     mylist=list() 
     for anchor in soup.find_all('div', {'class':'col-xs-8'})[:9]: 
      mylist.append(anchor.text) 
     finallist.append(mylist) 
    except: 
     pass 

import pandas as pd 
df=pd.DataFrame(finallist) 

df.columns=['Organiser', 'Instructors', 'Date', 'Venue', 'Level', 'participants', 'Section', 'Status', 'Description'] 

df['Date'] = pd.to_datetime(df['Date'],infer_datetime_format=True) 
df['participants'] = df['participants'].astype(int) 
関連する問題