Skip to content

ใช้ทวิตเตอร์ Twitter ใน Python

บทความนี้ผมจะพาผู้อ่านทุกท่านไปเขียนโปรแกรม Python เพื่อใช้งานกับทวิตเตอร์ (Twitter) กันครับ

  ในการใช้งานทวิตเตอร์ (Twitter) จะต้องทำผ่านสิ่งที่เรียกว่า API ทาง Twitter ได้เปิด API สำหรับนักพัฒนาภายนอก เป็นสิ่งที่ทำให้ Twitter ได้รับความนิยมในหมู่นักพัฒนาด้วยการเปิดกว้างข้อมูล
  ใน Python มีนักพัฒนาได้พัฒนาโมดูลสำหรับใช้งาน Twitter ใน Python เรียกว่า "TwitterAPI" ใช้ License: MIT  รองรับทั้ง Python 2 , Python 3 ครับ
ในการติดตั้งทำได้ง่าย ๆ ด้วยการสั่ง pip โดยใช้คำสั่ง

pip install TwitterAPI

ต่อไปผู้อ่านต้องไปเตรียมสิ่งจำเป็นต่อไปนี้ครับ

  • token_key และ token_secret เป็นข้อมูลที่ใช้ในการเข้าถึงบัญชี Twitter ของเรา
  • consumer_key และ  consumer_secret เราต้องสร้างแอพขึ้นมาบน Twitter เพื่อใช้ในการติดต่อกับ Twitter ให้ผู้อ่านไปสร้างแอพได้ที่ https://apps.twitter.com/app/new จะพบกับ

    สร้าง application ใหม่
    Name: *
    เช่น tontanontwitter
    Description: *
    เช่น ล็อกอินด้วย twitter
    Website: *
    เช่น http://wannaphong.com
    Callback URL
    ไม่ต้องใส่ก็ได้ครับ

    จากนั้นจะพบกับหน้านี้ ให้คลิกที่แท็บ Permissions แล้วติกที่ Read and Write

    เป็นการกำหนดให้แอพนี้สามารถเขียนและอ่านข้อมูลจาก Twitter ได้ครับ แล้วกด Update Settings จากนั้นคลิกที่แท็บ Keys and Access Tokens เราก็จะได้ข้อมูล consumer_key และ  consumer_secret ครับ

    ต่อไปเราจะเอาข้อมูล token_key และ token_secret กันครับ เลื่อนหน้าแท็บ Keys and Access Tokens ลงมาข้างล่างจะพบกับ Your Access Token จะมีปุ่ม Create my access token ให้ผู้อ่านคลิกปุ่มนั้นครับ

    แค่นี้เราก็ได้ข้อมูล token_key และ token_secret แล้วครับ

เมื่อได้ข้อมูลที่จำเป็นแล้วต่อไปเรามาลองเขียนโปรแกรมกันเลยครับ เริ่มแรกให้ต้องการ import TwitterAPI เข้ามาแล้วกรอกข้อมูลที่เราได้มาลงไปครับ

from TwitterAPI import TwitterAPI
consumer_key = ""
consumer_secret = ""
access_token_key = ""
access_token_secret = ""
api = TwitterAPI(consumer_key, consumer_secret, access_token_key, access_token_secret)

ทวิตข้อความใช้คำสั่ง

r = api.request('statuses/update', {'status':'This is a tweet! By Python :P'})

จะพบว่าข้อความได้ถูกเผยแพร่ไปยัง Twitter แล้ว

This is a tweet! By Python 😛
— Wannaphong (@tontan1998)

เช็คสถานะของ status ที่ทวิตไป

print(r.status_code)

หากเป็น 200 แสดงว่า  ข้อความได้ถูกทวิตไปแล้วครับ 😀
ถ้าต้องการค้นข้อมูลจาก Twitter ใช้คำสั่ง เช่น

r = api.request('search/tweets', {'q':'#เรารักในหลวง'})
for item in r:
        print(item)

จะพบกับข้อมูลมหาศาล ผมต้องการแค่ข้อความ ผมจึงเขียนโค้ดเป็น

r = api.request('search/tweets', {'q':'#เรารักในหลวง'})
for item in r:
    print(item['text'] if 'text' in item else item)

ผลลัพธ์

หากเราต้องการค้นข้อมูลจากสถานที่ เช่น เมือง New York ใช้คำสั่ง

r = api.request('statuses/filter', {'locations':'-74,40,-73,41'}) #พิกัด
for item in r:
        print(item)

ดูตัวอย่างการใช้งานเพิ่มเติมได้ที่ https://github.com/geduldig/TwitterAPI/tree/master/examples ครับ
หน้าเว็บโมดูล TwitterAPI https://github.com/geduldig/TwitterAPI
เอกสารการใช้งานโมดูล TwitterAPI http://geduldig.github.io/TwitterAPI/
ลองนำไปประยุกต์ใช้งานกันดูนะครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories web-developer, เครือข่าย

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

1 thought on “ใช้ทวิตเตอร์ Twitter ใน Python

  1. Oast

    ตอนคิวรี่นี่เด้งเพียบเลยครับ
    >>> r = api.request('search/tweets', {'q':'#เรารักในหลวง'})
    Traceback (most recent call last):
    File "", line 1, in
    File "C:\Python27\lib\site-packages\TwitterAPI\TwitterAPI.py", line 128, in request
    proxies=self.proxies)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 461, in request
    prep = self.prepare_request(req)
    File "C:\Python27\lib\site-packages\requests\sessions.py", line 394, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
    File "C:\Python27\lib\site-packages\requests\models.py", line 299, in prepare
    self.prepare_auth(auth, url)
    File "C:\Python27\lib\site-packages\requests\models.py", line 494, in prepare_auth
    r = auth(self)
    File "C:\Python27\lib\site-packages\requests_oauthlib\oauth1_auth.py", line 88, in __call__
    unicode(r.url), unicode(r.method), None, r.headers)
    File "C:\Python27\lib\site-packages\oauthlib\oauth1\rfc5849\__init__.py", line 257, in sign
    encoding=self.encoding)
    File "C:\Python27\lib\site-packages\oauthlib\common.py", line 405, in __init__
    self._params.update(dict(urldecode(self.uri_query)))
    File "C:\Python27\lib\site-packages\oauthlib\common.py", line 161, in urldecode
    return decode_params_utf8(params)
    File "C:\Python27\lib\site-packages\oauthlib\common.py", line 108, in decode_params_utf8
    v.decode('utf-8') if isinstance(v, bytes_type) else v))
    File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
    UnicodeDecodeError: 'utf8' codec can't decode byte 0xe0 in position 1: invalid continuation byte

    มันที่อะไรหรอครับ

    Reply

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *