ขูดข้อมูล Twitter ด้วย Python [ด้วย 2 APIs]

เผยแพร่แล้ว: 2020-11-30

สารบัญ

บทนำ

แพลตฟอร์มโซเชียลมีเดียเช่น Twitter เป็นหนึ่งในแหล่งเก็บข้อมูลที่ยอดเยี่ยมสำหรับการรวบรวมชุดข้อมูล การทำงานในโครงการวิทยาศาสตร์ข้อมูลใหม่ต้องใช้ข้อมูลในปริมาณที่พอเหมาะ การรวบรวมชุดข้อมูลไม่ใช่เรื่องง่าย

และ Twitter ก็มีประเภทข้อมูลที่หลากหลายเพราะเป็นชุดของทวีตจากผู้ที่มีความคิดและความรู้สึกที่แตกต่างกัน ชุดข้อมูลประเภทนี้ที่ไม่มีอคติเป็นข้อกำหนดเบื้องต้นที่จำเป็นสำหรับการฝึกโมเดลการเรียนรู้ของเครื่องใหม่

มาเริ่มกันเลย!

เราจะพูดถึง 2 APIs สำหรับการดึงข้อมูล Twitter

  1. Tweepy
  2. Twint

Tweepy

ก่อนที่เราจะเริ่มดูโค้ดหลามสำหรับการขูดข้อมูลโดยใช้ Tweepy API มีจุดหนึ่งที่คุณจำเป็นต้องรู้ว่าเราต้องการข้อมูลประจำตัวของบัญชีนักพัฒนา Twitter และหากคุณมีอยู่แล้ว

สำหรับคนที่ไม่มีบัญชีนักพัฒนา สามารถสมัครได้ ที่ นี่ และก่อนสมัครบัญชีนักพัฒนา คุณต้องมีบัญชี Twitter การสมัครบัญชีนักพัฒนาซอฟต์แวร์เป็นกระบวนการที่ง่าย และแอปพลิเคชันจะถามคำถามพื้นฐานสองสามข้อ เช่น เหตุผลในการสมัคร ฯลฯ และโดยทั่วไป การอนุมัติบัญชีนักพัฒนาซอฟต์แวร์จะใช้เวลา 2-3 วัน

เมื่อคุณได้รับการอนุมัติสำหรับบัญชีนักพัฒนาแล้ว ให้จดบันทึกคีย์ API ผู้บริโภค โทเค็นการเข้าถึง และรหัสลับการเข้าถึงโทเค็นจากส่วน "คีย์และโทเค็น"

นอกจากนี้ยังมีข้อสังเกตว่ามีข้อ จำกัด บางประการสำหรับ tweepy เช่นคุณสามารถขูดทวีตที่มีอายุไม่เกินหนึ่งสัปดาห์เท่านั้น และขีด จำกัด ในการคัดลอกมากถึง 18,000 ทวีตในกรอบเวลา 15 นาที

เยี่ยมมาก ตอนนี้เรามีคีย์และโทเค็นจากบัญชีนักพัฒนาซอฟต์แวร์แล้ว ให้อนุญาตพวกเขา

Consumer_key = " รหัสผู้บริโภคของคุณ "

Consumer_secret = " ความลับผู้บริโภคของคุณ "

access_token = " โทเค็นการเข้าถึงของคุณ "

access_token_secret = ความลับโทเค็นของคุณ

การ อนุญาต = tweepy.OAuthHandler (consumer_key, Consumer_secret)

Authorization.set_access_token (access_token, access_token_secret)

api = tweepy.API(การอนุญาต wait_on_rate_limit = True )

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

username = ' สุนทรพิชัย '

นับ = 100

ลอง :

#line1

tweets_obj = tweepy.Cursor(api.user_timeline,id = username).items(นับ)

#line2

tweets_list = [[tweet.created_at, tweet.id, tweet.text] สำหรับ ทวีต ใน tweets_obj]

#line3

tweets_df = pd.DataFrame (tweets_list)

ยกเว้น BaseException เป็น e:

พิมพ์ ( ' มีบางอย่างผิดปกติ ' , str (e))

ในตัวอย่างข้างต้น line1 จะสร้างอ็อบเจ็กต์แบบ iterable พร้อมทวีตทั้งหมด และถูกกำหนดให้กับตัวแปร “tweets_obj” เมื่อเราสร้างวัตถุแบบ iterable เสร็จแล้ว เรามาทำซ้ำและดึงข้อมูลทั้งหมด

เรากำลังแยกแอตทริบิวต์บางอย่างเช่น "created_at", "id", "text" และผนวกเข้ากับแต่ละรายการในอาร์เรย์ 2 มิติ โดยที่แต่ละรายการมีข้อมูลทั้งหมดของแต่ละทวีตที่เราคัดลอกมา ตอนนี้ เรามีอาร์เรย์ 2 มิติพร้อมแอตทริบิวต์เป็นแต่ละรายการ เราสามารถแปลงเป็นกรอบข้อมูลได้โดยใช้ไวยากรณ์ “pd.DataFrame()”

เหตุผลในการแปลงอาร์เรย์เป็น data frame คือความยืดหยุ่นมากขึ้น ความพร้อมใช้งานของวิธีการที่กำหนดไว้ล่วงหน้า และการเข้าถึงที่ง่ายดายทำให้โดดเด่นจากโครงสร้างข้อมูลทั้งหมดสำหรับโครงการวิทยาศาสตร์ข้อมูล

ในทำนองเดียวกัน มาดูโค้ดสำหรับการขูดข้อมูลที่มีการสืบค้นข้อความเฉพาะ

text_query = ' แกนนำสำหรับท้องถิ่น '

นับ = 100

ลอง :

#line1

tweets_obj = tweepy.Cursor(api.search,q = text_query).items(นับ)

#line2

tweets_list = [[tweet.created_at, tweet.id, tweet.text] สำหรับ ทวีต ใน tweets_obj]

#line3

df = pd.DataFrame (tweets_list)

ยกเว้น BaseException เป็น e:

พิมพ์ ( ' มีบางอย่างผิดปกติ ' , str (e))

ในตัวอย่างข้างต้น ทุกอย่างจะเหมือนกับตัวอย่างก่อนหน้า ในที่สุด เราก็สร้าง data frame พร้อมทวีตทั้งหมดที่มีข้อความค้นหา "vocal for local"

หากคุณกำลังมองหาการขูดข้อมูลที่เฉพาะเจาะจงหรือกำหนดเอง เช่น การรวมคุณลักษณะเพิ่มเติม เช่น จำนวนรีทวีต จำนวนรายการโปรด ฯลฯ เราสามารถปรับแต่งไวยากรณ์ของเราและแยกคุณลักษณะอื่นๆ ที่ tweepy ให้มา สำหรับการอ่านเพิ่มเติมเกี่ยวกับคุณลักษณะอื่น ๆ ที่นำเสนอโดย tweepy ให้ดูที่ เอกสาร ประกอบ

Twint

Twint API ไม่ต้องการข้อมูลประจำตัวของบัญชีนักพัฒนาใด ๆ คุณสามารถขูดทวีตได้อย่างง่ายดายโดยไม่ต้องใช้คีย์การให้สิทธิ์ นอกจากนี้ twint ยังไม่มีข้อจำกัดใดๆ เช่น จำนวนทวีต กรอบเวลา ขีด จำกัด ของสแครป ฯลฯ Twint ให้คุณดึงข้อมูลได้อย่างราบรื่นและ API ที่ใช้งานง่าย

เราสามารถพิมพ์รายชื่อผู้ติดตามของบุคคลโดยใช้ชื่อผู้ใช้จาก twint API

t_obj = twint.Config()

t_obj.Username = สุนทรพิชัย

twint.run.ผู้ติดตาม(t_obj)

ในตัวอย่างด้านบน twint.Config() กำหนดค่า twint API และทำให้สิ่งต่างๆ เริ่มต้นขึ้น และหลังจากกำหนดวัตถุแล้ว เราก็สามารถใช้ข้อมูลอ้างอิงนั้นสำหรับงานของเราได้ “t_obj.Username” จะกำหนดชื่อผู้ใช้ที่เราป้อน และ twint.run.Followers จะทำการค้นหาผู้ติดตามทั้งหมดของชื่อผู้ใช้นั้น

นอกจากนี้เรายังสามารถจัดเก็บข้อมูลที่คัดลอกมาไว้ในกรอบข้อมูลที่คล้ายกับ tweepy API

t_obj.Limit = 100

t_obj.Username = สุนทรพิชัย

t_obj.Pandas = True

twint.run.ผู้ติดตาม(t_obj)

result_df = twint.storage.panda.User_df

ทุกอย่างในตัวอย่างข้อมูลเกือบจะเหมือนกับตัวอย่างก่อนหน้า มีเพียงบรรทัดพิเศษของไวยากรณ์ "twint.storage.panda.User_df" ซึ่งแปลงข้อมูลที่คัดลอกมาเป็นกรอบข้อมูล กรอบข้อมูลผลลัพธ์ประกอบด้วยรายการผู้ติดตามของชื่อผู้ใช้ที่ให้ไว้

ตอนนี้เราได้เห็นการขูดข้อมูลผู้ติดตามของชื่อผู้ใช้เฉพาะแล้ว มาดูโค้ดสำหรับขูดทวีตของบัญชีใดบัญชีหนึ่งกัน

t_obj.Search = from:@sundarpichai

t_obj.Store_object = True

t_obj.Limit = 20

twint.run.Search(t_obj)

ทวีต = t.search_tweet_list

พิมพ์ (ทวีต)

ในตัวอย่างด้านบน เรากำลังสร้างอ็อบเจ็กต์ที่กำหนดค่าไว้เพื่อค้นหาทวีตของบุคคลใดบุคคลหนึ่ง เรายังสามารถกำหนดขีดจำกัดของทวีตในขณะที่ทำการขูดโดยใช้ไวยากรณ์ “t_obj.Limit” และหลังจากทำการค้นหา มันจะสร้างรายการทวีตทั้งหมด และเราสามารถกำหนดให้กับตัวแปรในเครื่องได้ตามความต้องการของเรา

หลังจากดูตัวอย่างข้อมูลการขูดข้อมูลของบัญชีใดบัญชีหนึ่งแล้ว คุณอาจมีคำถามสั้น ๆ ซึ่งก็คือวิธีการขูดทวีตที่มีคำหลักเฉพาะ? ไม่ใช่ปัญหา twint มีวิธีแก้ไขปัญหานี้

t_obj.Search = วิทยาศาสตร์ข้อมูล

t_obj.Store_object = True

t_obj.Limit = 100

twint.run.Search(t_obj)

ทวีต = t.search_tweet_list

พิมพ์ (ทวีต)

ข้อมูลโค้ดด้านบนนี้เหมือนกับข้อมูลโค้ดสำหรับการคัดลอกทวีตจากบัญชีใดบัญชีหนึ่ง โดยมีความแตกต่างเพียงบรรทัดเดียวในบรรทัดที่ 1 นอกจากนี้เรายังสามารถแปลงเป็นกรอบข้อมูลตามความสะดวกของเรา

สำหรับการอ่านเพิ่มเติมเกี่ยวกับ twint API โปรดดูที่ที่ เก็บและเอกสาร ประกอบ

บทสรุป

เราเข้าใจถึงความสำคัญของการขูดข้อมูลแล้ว เดินผ่าน API สองตัวและคุณสมบัติในการดึงข้อมูล Twitter เห็นวิธีการบางอย่างในการแปลงข้อมูลที่คัดลอกมาเป็นรูปแบบไฟล์ที่จำเป็นของเรา เมื่อคุณทราบ API เหล่านี้แล้ว ให้เริ่มขูดข้อมูลสำหรับโครงการวิทยาศาสตร์ข้อมูลของคุณ!

พวกเราที่ upGrad ยินดีที่จะช่วยเหลือคุณ และต้องการแจ้งให้คุณทราบเกี่ยวกับโอกาสที่คุณจะได้รับจากการเรียนรู้ python Python ถูกใช้อย่างกว้างขวางสำหรับ Machine Learning และ Data Science ซึ่งเป็นเทคโนโลยีที่ได้รับความนิยมและเกิดใหม่มากที่สุดสองเทคโนโลยี การเรียนรู้ Python และความรู้เกี่ยวกับทักษะเหล่านี้จะทำให้คุณเก่งในสาขาของคุณและมีโอกาสทางอาชีพที่ดีขึ้น

เรามีหลักสูตรมากมายที่พัฒนาร่วมกับผู้เชี่ยวชาญในอุตสาหกรรมและสถาบันการศึกษาชั้นนำเพื่อมอบทักษะทั้งหมดที่จำเป็นต่อความเป็นเลิศในสาขานี้แก่คุณ บางหลักสูตรที่สามารถช่วยให้คุณใช้ความรู้ของคุณใน python และเพิ่มโอกาสทางอาชีพของคุณ:

วิทยาศาสตร์ข้อมูล:

ดูโปรแกรมวิทยาศาสตร์ข้อมูลออนไลน์ของ upGrad ที่ พัฒนาด้วย IIIT-B ซึ่งเป็นหลักสูตรวิทยาศาสตร์ข้อมูลแบบเต็มรูปแบบเพื่อเข้าสู่สาขานี้และทำเครื่องหมายในอุตสาหกรรมด้วยความรู้ของคุณ

Masters of Science in Data Science : ได้รับการพัฒนาร่วมกับ Liverpool John Moores University และ IIIT-B โดยได้รับปริญญาโทด้าน Data Science จากหนึ่งในมหาวิทยาลัยชั้นนำของโลก

การเรียนรู้ของเครื่อง:

การรับรองขั้นสูงในการเรียนรู้ของเครื่องและ AI : IIT madras ซึ่งเป็นหนึ่งในสถาบันการศึกษาที่ดีที่สุดของอินเดีย ได้ร่วมมือกับ upGrad เพื่อสร้างหลักสูตรขั้นสูงเกี่ยวกับการเรียนรู้ของเครื่องเพื่อให้บุคคลทั่วไปมีความรู้เกี่ยวกับการเรียนรู้ของเครื่องด้วยหลักสูตรนี้

Masters of Science in Machine Learning and AI : Liverpool John Moores University และ IIIT-B ได้ร่วมมือกับ upGrad เพื่อมอบปริญญาวิทยาศาสตร์มหาบัณฑิตที่สมบูรณ์สำหรับบุคคลเพื่อเรียนรู้เทคโนโลยีในรายละเอียดและรับปริญญาอย่างเป็นทางการในเทคโนโลยีนี้เพื่อปูทางไปสู่ความสำเร็จ เส้นทางในด้านนี้

PG Diploma in Machine Learning และ AI : IIIT-B และ upGrad ร่วมมือกันเพื่อช่วยให้บุคคลต่างๆ ได้รับโอกาสในการทำหลักสูตรระยะยาว 12 เดือนเกี่ยวกับ Machine Learning และ AI และมีโอกาสเข้าสู่เทคโนโลยีนี้ด้วยหลักสูตรนี้

การขูดข้อมูลคืออะไร?

การขูดข้อมูลหมายถึงกระบวนการที่ซอฟต์แวร์คอมพิวเตอร์ดึงข้อมูลจากเอาต์พุตที่สร้างโดยโปรแกรมอื่น การขูดเว็บเป็นการขูดข้อมูลประเภทหนึ่งที่ใช้ในการรวบรวมข้อมูลหรือข้อมูลจากเว็บไซต์ต่างๆ ในการขูดเว็บ แอปพลิเคชันใช้เพื่อรวบรวมข้อมูลที่มีค่าจากเว็บไซต์ โปรแกรมขูดเว็บสามารถเข้าถึง WWW (เวิลด์ไวด์เว็บ) ได้อย่างรวดเร็วและง่ายดายโดยใช้ HTML (Hypertext Transfer Protocol) หรือเว็บเบราว์เซอร์

ทำไมการขูดข้อมูลบน Twitter จึงจำเป็น?

การขูดข้อมูลบนโซเชียลมีเดียช่วยในการติดตาม ประเมิน และกลั่นกรองข้อมูลที่มีอยู่บนแพลตฟอร์ม Twitter เป็นแพลตฟอร์มที่ได้รับความนิยมมากที่สุด และการขูดข้อมูล Twitter ช่วยให้ผู้ใช้สามารถวิเคราะห์พฤติกรรมของผู้ใช้ กลยุทธ์การแข่งขัน การวิเคราะห์ความรู้สึก และติดตามสิ่งที่เกิดขึ้นบนช่องทางโซเชียลยอดนิยมของโลกได้อย่างรวดเร็วจากทวีตของผู้คน เพื่อนร่วมงาน และธุรกิจที่ มีความสำคัญกับคุณ บริการดึงข้อมูล Twitter จัดการความต้องการแบบ end-to-end ของคุณในระยะเวลาที่ต่ำที่สุดและให้ข้อมูลที่จำเป็นแก่คุณ ตัวอย่างเช่น Twitter อนุญาตให้เฉพาะโปรแกรมรวบรวมข้อมูลรวบรวมข้อมูลผ่าน API เพื่อจำกัดปริมาณข้อมูลของผู้ใช้และกิจกรรมของพวกเขา

API คืออะไร?

Application Programming Interfaces เป็นโค้ดเล็กๆ ที่ช่วยให้อุปกรณ์ดิจิทัล โปรแกรมซอฟต์แวร์ และเซิร์ฟเวอร์ข้อมูลสามารถสื่อสารกันได้ และเป็นแกนหลักที่สำคัญของบริการต่างๆ ที่เราไว้วางใจในปัจจุบัน API เชื่อมต่อคอมพิวเตอร์หรือชิ้นส่วนของซอฟต์แวร์เข้าด้วยกัน ซึ่งต่างจากอินเทอร์เฟซผู้ใช้ ซึ่งเชื่อมต่อคอมพิวเตอร์กับมนุษย์ ไม่ได้ออกแบบมาสำหรับการใช้งานโดยตรงโดยใครก็ตาม (ผู้ใช้ปลายทาง) นอกเหนือจากโปรแกรมเมอร์คอมพิวเตอร์ที่รวมเอาซอฟต์แวร์นี้ไว้ในซอฟต์แวร์ API มักประกอบด้วยส่วนประกอบหลายอย่างที่ทำหน้าที่เป็นเครื่องมือหรือบริการสำหรับโปรแกรมเมอร์