ฮาวทูทำ Crawler ข้อมูลจาก Twitter ด้วย Python

Thannara Rattanakaeoprasoet
THE EXISTING COMPANY
3 min readFeb 7, 2020

--

พอดีมีเพื่อนต้องการให้ทำแจ้งเตือน BTS,MRTเสีย หรือขัดข้อง โดยใช้ข้อมูลที่ทาง @BTS_SkyTrain และ @BEM_MRT ได้ทวิตลง twitter มาทำแจ้งเตือนและเอาเฉพาะทวิตที่เกี่ยวข้องกับการขัดข้อง กับการเดินทางเท่านั้น โดยที่เราไม่ต้องเข้าแอพ twitter

อ่ะด้ายยยยย งั้นวันนี้เราจะสอนใช้ API มาดึงข้อมูล จาก twitter กัน

เครื่องมือ

  1. Twitter Account
  2. Python 3
  3. Editor

เมื่อมีครบแล้วก็ไปเริ่มกันเล้ยยยย

การที่เราจะใช้ twitter API ได้ จะต้องมี

  1. consumer key
  2. consumer secret
  3. access token
  4. access secret

ซึ่งเราจะได้จากการไปสมัคร https://developer.twitter.com/en/apps ใช้ Twitter Account ที่มีได้เลย เมื่อเข้าไปแล้วจะมีหน้าตาประมาณนี้ คลิกที่ Create an app ได้เลย

กรอกข้อมูลให้เรียบร้อย แล้วกด Create

จะขึ้น pop up แบบนี้ แล้วกด create

จากนั้น จะได้หน้าตาแบบนี้แล้วเลือก keys and tokens

กด Generate

เราก็จะได้ Access token กับ Access token secret ให้ copy เก็บไว้ก่อน เพื่อจะเอาไปใช้ หรือ หากทำหายหรือหาไม่เจอ ก็ค่อยมา Generate ใหม่ ก็ได้ค่ะ จากนั้นกด close

ทีนี้เราก็ได้ ครบทุกอันแล้ว โดย

  • consumer key คือ consumer API keys อันแรก
  • consumer secret คือ consumer API keys อันที่สอง
  • access token คือ access token
  • access secret คือ access token secret

เราจะใช้ Python3 ในการcraw ข้อมูลมา โดยที่ Python มี library ที่ชื่อว่า Tweepy ที่ใช้เรียก Twitter API โดยเฉพาะ

pip install tweepy

เนื่องจากเราต้องการทำแจ้งเตือน BTS เสียหรือขัดข้อง ถ้าเราดึงมาทุกทวิตก็คงไม่ได้ จึงต้องทำการตัดคำ ดังนั้น เราจะใช้ pythainlp ในการตัดคำหรือแบ่งคำ

pip install pythainlp

เครื่องมือครบแล้ว ไปเขียนโค้ดกัน

  • name = Account ที่เราต้องการดึงข้อมูล ในที่นี้เอาแค่ของ @BTS_SkyTrain

เอา keys ที่ได้จากด้านบนมาใส่

  • consumer key คือ consumer API keys อันแรก
  • consumer secret คือ consumer API keys อันที่สอง
  • access token คือ access token
  • access secret คือ access token secret

ในโค้ด เราจะดึงมา 5ทวิตล่าสุดของ Account นั้น มาดู

หลังจากที่ได้ ข้อความมาแล้ว ทำการตัด คำ เพื่อเช็คว่า ทวิตนั้น ได้มีคำที่เกี่ยวข้อง กับ‘ขัดข้อง, ‘ขออภัย’, ‘ขณะนี้’, ‘ความไม่สะดวก’, ‘ตามปกติ’ เพื่อนำมาทำ notification

เพียงเท่านี้เราก็สามารถดึงข้อมูลมาจากทวิตเตอร์ได้แล้ว หลังจากนี้สามารถนำข้อมูลที่ได้ ไปใช้ได้ตามสะดวก เช่น data visualization

อ่าน API เพิ่มเติมได้ที่

http://docs.tweepy.org/en/v3.5.0/api.html

https://developer.twitter.com/en/docs/api-reference-index

ถึงช่วงเวลาขายของ เราได้ทำแจ้งเตือนจาก @BTS_SkyTrain และ @BEM_MRT ไว้เป็นไลน์บอท ที่จะแจ้งเตือนทุกครั้งที่ @BTS_SkyTrain และ @BEM_MRT ทวิตที่เกี่ยวข้องกับคำว่า ‘ขัดข้อง ,‘ขออภัย’ ,‘ขณะนี้’ ,‘ความไม่สะดวก’ ,‘ตามปกติ’ หากใครที่สนใจ สามารถ add line ‘@363vzakf’ หรือสแกน QR code ได้ตามข้างล่างนี้

ไลน์บอทแจ้งเตือน BTS/MRT เสียหรือขัดข้อง

--

--