価格.comの性能比較ページをスクレイピングするを参考に、Safariでやってみた。なお、macOS上で実行。
実行時点で登録されている価格情報のあるノートPCは2,378。そのうちUSB 3.1 Type-Cがあるのは621。
#!/usr/local/bin/python3
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
def convert_list(data):
html = BeautifulSoup(data, 'lxml')
table = html.find_all('table', attrs={'class': 'tblBorderGray02'})[0]
records = table.find_all('tr', class_=False)
product_list = []
for record in records:
record_dict = {}
try:
record_dict['id'] = record.select('input[type=checkbox]')[0].attrs['value']
record_dict['price'] = record.find('span', class_='priceText').find('a').text
record_dict['interface'] = record.find('label', attrs={'title': 'インターフェース'}).text
except:
break
product_list.append(record_dict)
return product_list
url = 'http://kakaku.com/specsearch/0020/'
product_list = []
driver = webdriver.Safari()
driver.get(url)
# 価格情報のあるモデルだけ
driver.find_element_by_id('lDispNonPrice').click()
while True:
data = driver.page_source
product_list = product_list + convert_list(data)
try:
driver.find_element_by_class_name('paging').find_elements_by_tag_name('a')[-1].find_element_by_tag_name('span').click()
except:
break
time.sleep(4)
df = pd.DataFrame(product_list)
df.to_csv("notepc.csv")