

Python初心者です。  
BeautifulSoupを使ってスクレイピングを試みたのですがどうも文字コードに関する知識が乏しくうまくいきません。

[code]

    html = urllib2.urlopen(req)
    html2 = html.read()
    soup = BeautifulSoup(html2, "html.parser")
    tag = soup.findAll("p", attrs={"class":"txt"})  
    a = str(tag)
    
[/code]

とってきたテキストの文字コードを見てみたら

[code]

    print chardet.detect(a)
    {confidence:1.0, 'encoding': 'ascii'}
    
[/code]

という結果になりました。  
そこでファイルに書き込む際、文字コードをShift-jisにしたくいろいろ試みたのですがうまくいきませんでした。

どなたか解決策を知ってる方がいらっしゃたら書き込みお願いします。

追記：<http://www.goo-net.com/php/car_review/detail_list.php?car_cd=10101044>  
こちらのサイトの口コミのテキストをスクレイピングしようとしてます。


CC BY-SA 3.0
2016-01-23T08:25:23.730
21225
2016-02-24T08:53:37.940
2016-01-25T08:19:18.440
2521
14109
question
python
Pythonの文字コードに関して


str(tag)がまちがっているだけだと思います。次のようにしてSJISのファイルが作れました。

[code]

    import urllib2
    from bs4 import BeautifulSoup
    
    url = 'http://www.goo-net.com/php/car_review/detail_list.php?car_cd=10101044'
    req = urllib2.Request(url)
    html=urllib2.urlopen(req)
    html2=html.read()
    soup=BeautifulSoup(html2,"html.parser")
    tags=soup.findAll("p",attrs={"class":"txt"})
    with open('output.txt', 'wb') as f:
        for t in tags:
            print >>f, t.encode('cp932')
    
[/code]

**蛇足**

ちなみにPyQueryを使うと、こんな風に書けます。

[code]

    #!/usr/bin/env python
    from pyquery import PyQuery as pq
    
    url = 'http://www.goo-net.com/php/car_review/detail_list.php?car_cd=10101044'
    
    dom = pq(url)
    
    with open('output2.txt', 'wb') as f:
        for p in dom('p.txt').items():
            print >>f, p.text().encode('cp932')
    
[/code]


CC BY-SA 3.0
2016-01-24T03:34:22.080
21248
2016-01-24T03:40:28.583
2016-01-24T03:40:28.583
7837
7837
21225
answer