ฮาวทูทำ Crawler ข้อมูลจาก Twitter ด้วย Python
พอดีมีเพื่อนต้องการให้ทำแจ้งเตือน BTS,MRTเสีย หรือขัดข้อง โดยใช้ข้อมูลที่ทาง @BTS_SkyTrain และ @BEM_MRT ได้ทวิตลง twitter มาทำแจ้งเตือนและเอาเฉพาะทวิตที่เกี่ยวข้องกับการขัดข้อง กับการเดินทางเท่านั้น โดยที่เราไม่ต้องเข้าแอพ twitter
อ่ะด้ายยยยย งั้นวันนี้เราจะสอนใช้ API มาดึงข้อมูล จาก twitter กัน
เครื่องมือ
- Twitter Account
- Python 3
- Editor
เมื่อมีครบแล้วก็ไปเริ่มกันเล้ยยยย
การที่เราจะใช้ twitter API ได้ จะต้องมี
- consumer key
- consumer secret
- access token
- 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 เพิ่มเติมได้ที่
ถึงช่วงเวลาขายของ เราได้ทำแจ้งเตือนจาก @BTS_SkyTrain และ @BEM_MRT ไว้เป็นไลน์บอท ที่จะแจ้งเตือนทุกครั้งที่ @BTS_SkyTrain และ @BEM_MRT ทวิตที่เกี่ยวข้องกับคำว่า ‘ขัดข้อง ,‘ขออภัย’ ,‘ขณะนี้’ ,‘ความไม่สะดวก’ ,‘ตามปกติ’ หากใครที่สนใจ สามารถ add line ‘@363vzakf’ หรือสแกน QR code ได้ตามข้างล่างนี้