複数のページから取得した値をcsvファイルへ出力する関数を作成しました。
『複数のページのURLをまとめたlist』をall_urls
『値の取得、list(csv_list)へ代入する関数』をscrapeとし、
poolにより並列処理(pool(scrape,all_urls))を行いたいと思いますが、上手く稼動しません。並列処理をしなければ上手く稼動します。
稼動させる方法についてご教示いただけたら幸いです。
python
1import requests 2from bs4 import BeautifulSoup 3import xlrd 4import openpyxl 5import time 6import pandas as pd 7from multiprocessing import Pool,cpu_count 8 9all_urls = ['https://domain.com/a','https://domain.com/b','https://domain.com/c','https://domain.com/d'] 10 11csv_list = [] 12 13def scrape(url): 14 time.sleep(1) 15 response = requests.get(url) 16 response.encoding = response.apparent_encoding 17 soup = BeautifulSoup(response.text, 'html.parser') 18 atag = soup.find('span',{"class":"A"}) 19 answer = atag.text if atag else 'none' 20 csv_list.append(answer) 21 22if __name__ == "__main__": 23 n = cpu_count() 24 p = Pool(n) 25 p.map_async(scrape,all_urls) 26 p.terminate() 27 p.join() 28 29df = pd.DataFrame(csv_list) 30df.to_csv('Downloads/test.csv',encoding = 'utf-8-sig')
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/21 16:09
2019/01/22 00:07
2019/01/24 15:51