

<https://live23.5ch.net/test/read.cgi/livetbs/1220170942/>  
このurlのレスをスクレイピングしたいのですが以下のコードですると文字化けします。

[code]

    res=requests.get("https://live23.5ch.net/test/read.cgi/livetbs/1220170942/")
    soup = BeautifulSoup(res.text, 'lxml')
    threadRes=soup.find_all('dd')
    print(threadRes) =>文字化けあり
    
[/code]

また2行目の第一引数をres.contentにすると文字化けは直りますが全てのレスをスクレイピングできません  
(このurlでは1001個のレスがあるのに対し223個のレスしか出力されない)

[code]

    res=requests.get("https://live23.5ch.net/test/read.cgi/livetbs/1220170942/")
    soup = BeautifulSoup(res.content, 'lxml')
    print(soup)
    threadRes=soup.find_all('dd')
    print(len(threadRes)) => 223
    
[/code]

どうすれば文字化けを直し全てのレスをスクレイピングできますか？


CC BY-SA 4.0
2022-08-12T05:55:52.593
90520
2022-08-12T06:38:52.293
49026
question
python web-scraping beautifulsoup
スクレイピングの文字化けを直したい


手元の環境では質問コメントの[回答の一つ](https://ja.stackoverflow.com/a/83520/3060)の通り、`res.encoding
= res.apparent_encoding`を使っても文字化けしましたが、`res.encoding =
"shift_jis"`で文字コードを直接指定することで正しく表示できることを確認しました。

[code]

    import requests
    from bs4 import BeautifulSoup
    
    res=requests.get("https://live23.5ch.net/test/read.cgi/livetbs/1220170942/")
    #res.encoding = res.apparent_encoding
    res.encoding = "shift_jis" 
    
    soup = BeautifulSoup(res.text, 'lxml')
    threadRes=soup.find_all('dd')
    print(threadRes)
    print(len(threadRes))  # 1001
    
[/code]

参考資料

  * [Python3 – requestsの文字化け対策](http://memorandum-plus.com/2018/12/11/python3-requests%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E5%AF%BE%E7%AD%96/)


CC BY-SA 4.0
2022-08-12T06:38:52.293
90522
2022-08-12T06:38:52.293
9820
90520
answer