0

Pythonを使用してページからデータを解析しようとしていますが、これは非常に簡単ですが、すべてのデータがjquery要素の下に隠されているため、データを取得するのが難しくなっています。私はPythonとプログラミング全体の初心者なので、まだそれに慣れているので、私を許してください.だから私はEからのすべてのデータが必要ですこれは私がこれまでに持っているコードです:

import string, urllib2, csv, urlparse, sys
from bs4 import BeautifulSoup

changable_url = 'http://www.asusparts.eu/partfinder/Asus/All%20In%20One/E%20Series'
page = urllib2.urlopen(changable_url)
base_url = 'http://www.asusparts.eu'
soup = BeautifulSoup(page)

redirects = []
model_info = []

select = soup.find(id='myselectListModel')
print select.get_text()


options = select.findAll('option')

for option in options:
    if(option.has_attr('redirectvalue')):
       redirects.append(option['redirectvalue'])

for r in redirects:
    rpage = urllib2.urlopen(base_url + r.replace(' ', '%20'))
    s = BeautifulSoup(rpage)
    print s

    sys.exit()

ただし、唯一の問題は、Asus -> All In One -> E Series -> ET10B -> AC Adapter である最初のモデルのデータを印刷するだけです。実際の HTML ページは次のように出力されます... (出力が長すぎました - 必要なメイン出力を貼り付けただけです)

E シリーズのすべてのパーツのデータを取得する方法がわかりません。また、私が使用している現在の方法に関連する回答があれば幸いです。これは担当者が望んでいる方法です。ありがとう。

[編集]

これは私がHTMLを解析しようとしている方法です:

for r in redirects:
    rpage = urllib2.urlopen(urljoin(base_url, quote(r)))
    s = BeautifulSoup(rpage)
    print s

    data = soup.find(id='accordion')

    selection = data.findAll('td')

    for s in selections:
        if(selection.has_attr('class', 'ProduktLista')):
            redirects.append(td['class', 'ProduktLista'])

これは私が思いついたエラーです:

Traceback (most recent call last):
  File "C:\asus.py", line 31, in <module>
    selection = data.findAll('td')
AttributeError: 'NoneType' object has no attribute 'findAll'
4

1 に答える 1

0

ループ内にある呼び出しを削除する必要がありsys.exit()ます。

for r in redirects:
    rpage = urllib2.urlopen(base_url + r.replace(' ', '%20'))
    s = BeautifulSoup(rpage)
    print s

    # sys.exit()  # remove this line, no need to exit your program

urllib.quoteオプションのドロップダウンから取得した URL を適切に引用するために使用することもできます。これにより、手動でスペースを に置き換える必要がなくなります'%20'urlparse.urljoin()最終的な URL を作成するために使用します。

from urllib import quote
from urlparse import 

for r in redirects:
    rpage = urllib2.urlopen(urljoin(base_url, quote(r)))
    s = BeautifulSoup(rpage)
    print s
于 2013-04-19T09:53:52.767 に答える