01/10/2018, 11:10

Nhờ giải quyết vấn đề Tiếng Việt trong Scrapy của Python khi crawl dữ liệu

Sau 1 ngày được các bác chỉ giáo và vật lộn với mớ code của em tại topic https://daynhauhoc.com/t/hoi-ve-van-de-xu-ly-tieng-viet-voi-python/52849/19 thì nay em đã hiểu vấn đề của em nằm ở đâu và em xin lập topic khác để nhờ các bác giải đáp đúng trọng tâm hơn tránh bị lan man lạc đề ạ

Em sử dụng Scrapy crawl dữ liệu về và input vào databse. Nhưng vấn đề là khi data đi qua hệ thống của Scrapy thì bị lỗi dấu Tiếng Việt.

Ban đầu em tưởng là do dữ liệu crawl về như thế. Nhưng sau khi em gán dữ liệu trực tiếp vào thì vẫn bị lỗi mất tiếng việt. Cụ thể:
Em gán item[‘name’] = 'Việt Nam’
Thì sau quá trình xử lý của Scrapy…
kết quả in ra màn hình là ‘name’: ‘Vixe1xbbx87t Nam’,
kết quả được insert vào database là Việt Nam

Nhờ các bác giải thích dùm em và cho em phương án giải quyết vấn đề này với ạ

Tao Không Ngu. viết 13:16 ngày 01/10/2018

Hi Hà Temwin.
Nghe đồn phải cấu hình unicodee cho CSDL nưa @_@!

Hà Temwin viết 13:22 ngày 01/10/2018

Hi Hà Temwin.
Nghe đồn phải cấu hình unicodee cho CSDL nưa @_@!

database của em là utf8 unicode.
Nhưng việc in ra màn hình thì liệu quan gì đến database đâu mà nó vẫn bị lỗi kìa.

Em nghĩ vấn đề này là do cấu hình gì đấy trong Scrapy mà mình k biết.

Anh Tú viết 13:11 ngày 01/10/2018

Bạn dùng Python mấy? Có dùng Pipeline để lưu vào db ko? Có dùng ORM ko? Đã thử encode utf-8 cho string trước khi lưu vào db chưa?
Mình dùng scrapy chưa bao giờ bị lỗi unicode.

Hà Temwin viết 13:22 ngày 01/10/2018

Em dùng python 2.7.13
nếu bác đã có kinh nghiệp Scrapy bác có thể cho em xin contact để tiện trao đổi được không?
Bác có thể teamview xem giúp em ví dụ của em được không? Vì scrapy nó nhiều file connect với nhau nên đưa lên đây hỏi thì mọi người rất khó hình dung

viết 13:11 ngày 01/10/2018

khi tạo connection có khai báo charset='utf8' chưa ~.~

dùng database gì? MySQL? sqlite? Dùng Python 2 hay Python 3??

Anh Tú viết 13:22 ngày 01/10/2018

Bạn học cách đặt câu hỏi cho đúng thì tự sẽ có câu trả lời, không liên quan đến project structure của Scrapy.

明玉 viết 13:15 ngày 01/10/2018

item[‘name’] = ‘Việt Nam’

item['name'] = unicode('Việt Nam', 'utf8')

hoặc

item['name'] = 'Việt Nam'.decode('utf8')

hoặc

item['name'] = u'Việt Nam'

Source code thì hầu hết mọi người lưu kiểu utf8 cả, nên cứ decode bằng utf8 để ra chuỗi unicode
Tham khảo thêm cái này:
http://python.forumotion.net/t3-topic

Bài liên quan
0