データを取得する必要がある選択リストがたくさんある Web ページからデータを収集しようとしています。ここにページがあります: - http://www.asusparts.eu/partfinder/Asus/All In One/E Series/
そして、これは私がこれまでに持っているものです:
import glob, string
from bs4 import BeautifulSoup
import urllib2, csv
for file in glob.glob("http://www.asusparts.eu/partfinder/*"):
##-page to show all selections for the E-series-##
selected_list = 'http://www.asusparts.eu/partfinder/Asus/All In One/E Series/'
##-
page = urllib2.urlopen(selected_list)
soup = BeautifulSoup(page)
##-page which shows results after selecting one option-##
url = 'http://www.asusparts.eu/partfinder/Asus/All In One/E Series/ET10B'
##-identify the id of select list which contains the E-series-##
select = soup.find('select', id="myselectListModel")
option_tags = select.findAll('option')
##-omit first item in list as isn't part of the option-##
option_tags = option_tags[1:]
for option in option_tags:
open(url + option['value'])
html = urllib2.urlopen("http://www.asusparts.eu/partfinder/")
soup = BeautifulSoup(html)
all = soup.find('div', id="accordion")
私は正しい方法で進んでいるかどうかわかりませんか?すべての選択メニューが混乱を招くため。基本的に、画像、価格、説明など、選択した結果からすべてのデータを取得する必要があります。それらはすべて、「アコーディオン」という名前のすべての結果を含む 1 つの div タグ内に含まれていますが、これでもすべてのデータを収集できますか? または、この div 内のタグを検索するために、さらに深く掘り下げる必要がありますか? また、一度にすべてのデータを取得できるため、クラスではなく ID で検索することをお勧めします。上記のものからこれを行うにはどうすればよいですか?ありがとう。また、グロブ関数を正しく使用しているかどうかもわかりませんか?
編集
これが私の編集したコードです。エラーは返されませんが、e シリーズのすべてのモデルが返されるかどうかはわかりません。
import string, urllib2, urllib, csv, urlparse from bs4 import
BeautifulSoup
##-page which shows results after selecting one option-##
url = 'http://www.asusparts.eu/partfinder/Asus/All In One/E Series/ET10B'
base_url = 'http://www.asusparts.eu/' + url
print base_url
##-page to show all selections for the E-series-##
selected_list = urllib.quote(base_url + '/Asus/All In One/E Series/ET10B')
print urllib.quote(base_url + '/Asus/All In One/E Series/ET10B')
#selected_list = 'http://www.asusparts.eu/partfinder/Asus/All In One/E Series/ET10B'
##-
page = urllib2.urlopen('http://www.asusparts.eu/partfinder/Asus/All%20In%20One/E%20Series')
soup = BeautifulSoup(page)
print soup
##-identify the id of select list which contains the E-series-##
select = soup.find('select', id="myselectListModel")
option_tags = select.findAll('option')
print option_tags
##-omit first item in list as isn't part of the option-##
option_tags = option_tags[1:]
print option_tags
for option in option_tags:
url + option['redirectvalue']
print " " + url + option['redirectvalue']