2017-07-25 9 views
0

この範囲のアドレスから日付を取得するには、次のコマンドを入力しますが、複数回実行することはできません。私はPython 3を使用しています。あなたが下に見ることができるように、サイトのURLにはiが付いています。http://zinc.docking.org/substance/10; http://zinc.docking.org/substance/11 ...など。ここでは、コードは次のとおりです。Python組み込みループの場合

import bs4 as bs 
import urllib.request 
site = "http://zinc.docking.org/substance/" 
for i in range(10, 16): 
    site1 = str("%s%i" % (site, i)) 
    sauce = urllib.request.urlopen(site1).read() 
    soup = bs.BeautifulSoup(sauce, 'lxml') 
    table1 = soup.find("table", attrs={"class": "substance-properties"}) 
for row in table1.findAll('tr'): 
    row1 = row.findAll('td') 
ate = row1[0].getText() 
print(ate) 

これが私の出力です:

$python3 Date.py 
November 11th, 2005 

スクリプトがしかし、私に3日を与える必要があります。このコードは動作するので、row [0]には実際に値が入っていることがわかります。何らかの単純な書式設定エラーがあるように感じますが、トラブルシューティングを開始する場所がわかりません。私はそれをフォーマットすると、「正しく」、これはコードです:

import bs4 as bs 
import urllib.request 
import pandas as pd 
import csv 
site = "http://zinc.docking.org/substance/" 
for i in range(10, 16): 
    site1 = str("%s%i" % (site, i)) 
    sauce = urllib.request.urlopen(site1).read() 
    soup = bs.BeautifulSoup(sauce, 'lxml') 
    table1 = soup.find("table", attrs={"class": "substance-properties"}) 
    table2 = soup.find("table", attrs={"class": "protomers"}) 
    for row in table1.findAll('tr'): 
     row1 = row.findAll('td') 
     ate = row1[0].getText() 
     print(ate) 

次のように私が手にエラーがある:

Traceback (most recent call last): 
File "Stack.py", line 11, in <module> 
ate = row1[1].getText() 
IndexError: list index out of range 

最初のコードでは、私はその行を知っている作品[0]実際には含まれていません価値。何か案は?

答えて

1

あなたのインデントを修正する場合があります

import bs4 as bs 
import urllib.request 
site = "http://zinc.docking.org/substance/" 
for i in range(10, 16): 
    site1 = str("%s%i" % (site, i)) 
    sauce = urllib.request.urlopen(site1).read() 
    soup = bs.BeautifulSoup(sauce, 'lxml') 
    table1 = soup.find("table", attrs={"class": "substance-properties"}) 
    for row in table1.findAll('tr'): 
     row1 = row.findAll('td') 
     Date = row1[0].getText() 
     print(Date) 

編集:あなたは予約名であるあなたのDate変数の名前を変更する必要があります。また、慣習的に、Python変数は小文字です。

+0

パトリックは、応答をありがとうございましたが(前回の最新の呼び出し)私は、コードを修正し、私はエラー トレースバックとしてこれを得た: 日付で ファイル「Reset.py」、ライン14を、= ROW1 [0 ] .getText() IndexError:リストのインデックスが範囲外です。 – jcruzer

+0

'' row1'の 'len'を調べるか、' print'してください。 – patrick

+0

上記のコードを投稿してください。私はこのように読むことができません。 – patrick

関連する問題