前提・実現したいこと
Pythonクローリング&スクレイピング
https://gihyo.jp/book/2017/978-4-7741-8367-1
という本で勉強しています。
mac OS 10.14.4
iTerm2で自身のpythonコードを実行したところ、
クローリングしてきた文字がuXXXXと表記されるように
なってしまいました。
どなたか解決策をご存じの方はいらっしゃいませんか?
よろしくお願いします。
発生している問題・エラーメッセージ
$ python python_crawler_4.py {'url': u'https://gihyo.jp/dp/ebook/2019/978-4-297-10576-1', 'content': [u'Part1\u521d\u4e2d\u7d1a\u8005\u306e\u3064\u307e\u305a\u304d\u306b\u52b9\u304f\u3010\u304a\u52a9\u3051\u3011\u30c6\u30af\u30cb\u30c3\u30af', u'Part2\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u5236\u3059\u8005\u304c\u30de\u30af\u30ed\u3092\u5236\u3059\u3010\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3011\u30c6\u30af\u30cb\u30c3\u30af',
該当のソースコード
python
1import re 2import requests 3import lxml.html 4 5def main(): 6 session = requests.Session() 7 response = requests.get('https://gihyo.jp/dp') 8 urls = scrape_list_page(response) 9 for url in urls: 10 response = session.get(url) 11 ebook = scrape_detail_page(response) 12 print(ebook) 13 break # first, break for only once 14 15def scrape_list_page(response): 16 root = lxml.html.fromstring(response.content) 17 root.make_links_absolute(response.url) 18 19 for a in root.cssselect('#listBook a[itemprop="url"]'): 20 url = a.get('href') 21 yield url 22 23def scrape_detail_page(response): 24 root = lxml.html.fromstring(response.content) 25 ebook = { 26 'url': response.url, 27 'title': root.cssselect('#bookTitle')[0].text_content(), 28 'price': root.cssselect('.buy')[0].text.strip(), 29 'content': [normalize_spaces(h3.text_content()) for h3 in root.cssselect('#content > h3')], 30 } 31 return ebook 32 33def normalize_spaces(s): 34 return re.sub(r'\s+', '', s).strip() 35 36 37if __name__ == '__main__': 38 main() 39 40
試したこと
たくさん。もうどうすればいいかわかんないので助けてください。
補足情報(FW/ツールのバージョンなど)
前章のローカル環境にてMongDBのインストール&活用する段階で文字化けが発生し始めました。
下記の方と同じことが起こり、requestやlxmlの再インストールなどこねくり回している間に文字化けがいつの間にか起こっていたように思います。
https://teratail.com/questions/98654

回答2件
あなたの回答
tips
プレビュー