前提・実現したいこと
スクレイピングで取得したデータの'\xa0'や'\n'という余計な文字を消去したいです。
発生している問題・エラーメッセージ
{'url': 'https://db.netkeiba.com/race/201906010111/', 'title': '第68回日刊スポ賞中山金杯(G3)', 'race_data': '芝右2000m\xa0/\xa0天候 : 晴\xa0/\xa0芝 : 良\xa0/\xa0発走 : 15:35', 'race_data2': '2019年1月5日 1回中山1日目 サラ系4歳以上オープン\xa0\xa0(国際)指', 'shoukin': '4,156.7', 'chaku': '1', 'waku': '6', 'umaban': '11', 'umamei': '\nウインブライト\n\n', 'seirei': '牡5', 'kinryou': '58', 'kishu': '\n松岡正海\n\n', 'tanshou': '8.4', 'ninki': '3', 'taijyuu': '490(+12)', 'choukyoushi': '\n[東]\n畠山吉宏\n\n', 'banushi': '\nウイン\n\n'}
該当のソースコード
from typing import Iterator import time import re import requests import lxml.html import csv def main(): session = requests.Session() response = requests.get('https://db.netkeiba.com/?pid=race_list&word=%C6%FC%B4%A9%A5%B9%A5%DD%A1%BC%A5%C4%BE%DE%C3%E6%BB%B3%B6%E2%C7%D5') response.encoding = response.apparent_encoding urls = scrape_list_page(response) for url in urls: time.sleep(1) response = session.get(url) edata = scrape_detail_page(response) print(edata) break def scrape_list_page(response: requests.Response) -> Iterator[str]: html = lxml.html.fromstring(response.text) html.make_links_absolute(response.url) for a in html.cssselect('a[title*="(G3)"]'): url = a.get('href') yield url def scrape_detail_page(response: requests.Response) -> dict: html = lxml.html.fromstring(response.content) edata = { 'url' : response.url, 'title' : html.cssselect('dl.racedata.fc h1')[0].text_content(), 'race_data' : html.cssselect('dl.racedata.fc span')[0].text_content(), 'race_data2' : html.cssselect('p.smalltxt')[0].text_content(), 'shoukin' : html.cssselect('table.race_table_01.nk_tb_common td.txt_r')[4].text_content(), 'chaku' : html.cssselect('table.race_table_01.nk_tb_common td.txt_r')[0].text_content(), 'waku' : html.cssselect('table.race_table_01.nk_tb_common span')[0].text_content(), 'umaban' : html.cssselect('table.race_table_01.nk_tb_common td.txt_r')[1].text_content(), 'umamei' : html.cssselect('table.race_table_01.nk_tb_common td.txt_l')[0].text_content(), 'seirei' : html.cssselect('table.race_table_01.nk_tb_common td.txt_c')[0].text_content(), 'kinryou' : html.cssselect('table.race_table_01.nk_tb_common td.txt_c')[1].text_content(), 'kishu' : html.cssselect('table.race_table_01.nk_tb_common td.txt_l')[1].text_content(), 'tanshou' : html.cssselect('table.race_table_01.nk_tb_common td.txt_r')[3].text_content(), 'ninki' : html.cssselect('table.race_table_01.nk_tb_common span')[2].text_content(), 'taijyuu' : html.cssselect('table.race_table_01.nk_tb_common td[nowrap="nowrap"]')[14].text_content(), 'choukyoushi' : html.cssselect('table.race_table_01.nk_tb_common td.txt_l')[2].text_content(), 'banushi' : html.cssselect('table.race_table_01.nk_tb_common td.txt_l')[3].text_content(), } return edata if __name__ == '__main__': main()
試したこと
'banushi' : html.cssselect('table.race_table_01.nk_tb_common td.txt_l')[3].text.strip('\n'),
text.strip()は試してみましたが、
'banushi': '' ```の様に表示されて上手くいきません。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/19 07:52