解析プロセスは、データ処理に費やされるかなりの時間のために複雑になります。 マルチスレッドにより、データ処理の速度が大幅に向上します。 解析用のサイトは
「世界銀行券のディレクトリ」で 、他の通貨との関係で通貨を取得します。
処理時間を半分にするためにプログラムコードを持ち込みます。
インポート
import requests
主な手順
def main(): url = 'http://banknotes.finance.ua/' links = []
URLを取得
def get_html(url): r = requests.get(url) return r.text
マルチスレッド機能
def make_all(url): html = get_html(url) data = get_page_data(html) write_csv(data)
ホームページのURLを取得する
def get_all_links(html, links):
ネストされたページの解析
def get_page_data(html): soup = BeautifulSoup(html, 'lxml') try: name = soup.find('div', 'pagehdr').find('h1').text except: name = '' try: massiv_price = [pn.find('b').text for pn in soup.find('div', class_ = 'wm_exchange').find_all('a', class_ = 'button', target = False)]+[pr.text for pr in soup.find('div', class_ = 'wm_exchange').find_all('td', class_ = 'amount')] if len(massiv_price)==6: massiv_price=massiv_price[0]+massiv_price[3]+massiv_price[1]+massiv_price[4]+massiv_price[2]+massiv_price[5] elif len(massiv_price)==4: massiv_price=massiv_price[0]+massiv_price[2]+massiv_price[1]+massiv_price[3] except: massiv_price = '' data = {'name': name, 'price': massiv_price} return data
ファイルレコード
def write_csv(data): with open('coin.csv', 'a') as f: writer = csv.writer(f) writer.writerow( (data['name'], data['price']) )
提案されたコードは、サイトの機能を考慮に入れて、解析に(だけでなく)広く使用できます。