<実現したいこと>
クラウドソーシングサイト『クラウドワークス』『ランサーズ』から『タイトル』『案件の残り時間』『URL』を10件ずつ取得して(ランサーズから5件ずつ、クラウドワークスから5件ずつ)、それらを以下のような1つのDataFrameに格納したいです。
リスト名はクラウドワークス 『d_titleC, d_timeC, d_URL1C 』、ランサーズ『d_titleL, d_timeL, d_URL1L』です
<コード>
python
1import requests 2from bs4 import BeautifulSoup 3import pandas as pd 4 5#クラウドワークス 6urlC = 'https://crowdworks.jp/public/jobs/search?search%5Bkeywords%5D=%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&keep_search_criteria=true&order=new&hide_expired=true' 7rC = requests.get(urlC) 8soupC = BeautifulSoup(rC.text) 9 10d_titleC = [] 11d_URL1C = [] 12d_timeC = [] 13 14contentsC = soupC.find_all('div',class_='job_data_row') 15for i in range(5): 16 try: 17 test1C = contentsC[i].find('h3', class_='item_title') 18 test2C = test1C.find('a') 19 titleC = test2C.text 20 URL1C = test2C.get('href').replace('/p', 'https://crowdworks.jp/p') 21 timeC = contentsC[i].find('div', class_='entry_data expires').text 22 d_titleC.append(titleC) 23 d_URL1C.append(URL1C) 24 d_timeC.append(timeC) 25 except: 26 pass 27 28 29#ランサーズ 30urlL = 'https://www.lancers.jp/work/search?keyword=%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0&show_description=0&sort=deadlined&work_rank%5B%5D=0&work_rank%5B%5D=1&work_rank%5B%5D=2&work_rank%5B%5D=3' 31rL = requests.get(urlL) 32soupL = BeautifulSoup(rL.text) 33 34d_titleL = [] 35d_URL1L = [] 36d_timeL = [] 37 38contentsL = soupL.find_all('div',class_='c-media__content') 39for i in range(5): 40 try: 41 titleL = contentsL[i].find('a', class_='c-media__title').text 42 if 'NEW' in titleL: 43 titleLNEW = titleL.replace('NEW','') 44 d_titleL.append(titleLNEW) 45 elif '初回' in titleL: 46 titleLShokai = titleL.replace('初回','') 47 d_titleL.append(titleLShokai) 48 else: 49 d_titleL.append(titleL) 50 URL1L = test1L.get('href').replace('/w', 'https://www.lancers.jp/w') 51 d_URL1L.append(URL1L) 52 timeL = contentsL[i].find('div', class_='c-media__content__left').text 53 d_timeL.append(timeL) 54 except: 55 pass
<試したこと>
以下のDataFrameだと1つのマス目に1つのリストが入ってしまいます。例えば「タイトル」列の1行目にクラウドワークスのタイトル5件すべてが入る感じです。ですので、1つのマス目に1件が入るようにしたいです。
python
1result = { 2 'タイトル': [d_titleC, d_titleL], 3 '残り時間': [d_timeC, d_timeL], 4 'URL': [d_URL1C, d_URL1L] 5} 6df = pd.DataFrame(result) 7df
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。