วิธีขูดข้อมูล Youtube โดยใช้ Python

เผยแพร่แล้ว: 2019-05-29
สารบัญ แสดง
ทำไมต้องขูดข้อมูลจาก Youtube?
1. ค้นหาคีย์เวิร์ดที่ชอบมากที่สุด
2. เปรียบเทียบแฮชแท็ก
3. ค้นหาช่องยอดนิยม
4. ติดตามความนิยมของช่อง
5. บันทึกไลค์ ไม่ชอบ และยอดดูในวิดีโอ
มาเริ่มกันเลยกับรหัส:
รหัสโปรแกรมรวบรวมข้อมูลของ YouTube อธิบาย:
จุดข้อมูลใดที่คุณสามารถขูดจาก Youtube ได้
ชื่อ
ชื่อช่อง
จำนวนการดู
ชอบ
ไม่ชอบ
จำนวนการสมัคร
แฮชแท็ก
บทสรุป
ต้องการความช่วยเหลือในการดึงข้อมูลเว็บหรือไม่?

YouTube กลายเป็นผู้ชนะที่ชัดเจนเมื่อพูดถึงเว็บไซต์แบ่งปันวิดีโอ และในขณะที่มี การกล่าวกันว่ามีมูลค่า มากกว่า 160,000 ล้านดอลลาร์ แต่จำนวนผู้ที่ทำมาหากินผ่านเว็บไซต์ก็มีจำนวนมากเช่นกัน ผู้สร้างเนื้อหาเหล่านี้เข้าร่วมโปรแกรมพันธมิตร YouTube และการสร้างรายได้จากเนื้อหาของพวกเขาสร้างรายได้มากมายผ่านโฆษณา

ทำไมต้องขูดข้อมูลจาก Youtube?

ข้อมูล YouTube สามารถเป็นประโยชน์สำหรับกรณีการใช้งานที่หลากหลาย เช่น:

1. ค้นหาคีย์เวิร์ดที่ชอบมากที่สุด

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

2. เปรียบเทียบแฮชแท็ก

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

3. ค้นหาช่องยอดนิยม  

การแยกวิดีโอยอดนิยมบน YouTube ช่วยให้คุณสร้างกราฟความถี่ของชื่อช่องที่เกิดขึ้นได้ ทำให้คุณค้นหาช่องยอดนิยมที่ผู้คนชื่นชอบได้ ในทางกลับกัน วิธีนี้จะช่วยให้คุณเข้าใจว่าหัวข้อใดได้รับความนิยมมากที่สุดในหมู่ผู้ดู YouTube

4. ติดตามความนิยมของช่อง

โดยการดึงข้อมูลของวิดีโอที่อัปโหลดใหม่ของช่อง YouTube ใดช่องหนึ่ง คุณจะสามารถค้นหาได้ว่าความนิยมของช่องนั้นเพิ่มขึ้นหรือลดลง หรือหยุดนิ่ง

5. บันทึกไลค์ ไม่ชอบ และยอดดูในวิดีโอ

คุณสามารถสร้างกราฟที่มีเวลาในแกน x และชอบ ไม่ชอบ หรือยอดดูในแกน y ได้ โดยการดึงข้อมูลจากวิดีโอเหล่านั้นตามช่วงเวลาปกติ

มาเริ่มกันเลยกับรหัส:

เนื่องจากเราได้อธิบายขั้นตอนการติดตั้งและการเริ่มต้นใช้งานในบทความ “วิธีการขูดข้อมูลจาก” ก่อนหน้า นี้ แล้ว เราหวังว่าคุณจะพร้อมสำหรับขั้นตอนเหล่านี้

หากต้องการเรียกใช้โค้ด ให้ใช้คำสั่ง python จากนั้นป้อน URL ของวิดีโอ YouTube เมื่อได้รับแจ้ง

ดึงข้อมูล youtube
รูป: การรันโค้ดจากเชลล์สคริปต์

คัดลอกโค้ดที่ระบุด้านล่างลงในไฟล์และตั้งชื่อเป็น youtubeDataExtractor.py (แม้ว่าจริงๆ แล้วคุณสามารถตั้งชื่อไฟล์อะไรก็ได้ ตราบใดที่มันลงท้ายด้วย '.py')

[รหัสภาษา =”หลาม”]

#!/usr/bin/python
# -*- การเข้ารหัส: utf-8 -*-

นำเข้า urllib.request
นำเข้า urllib.parse
นำเข้า urllib.error
จาก bs4 นำเข้า BeautifulSoup
นำเข้า ssl
นำเข้า json
นำเข้า ast
นำเข้า json
นำเข้าระบบปฏิบัติการ
จาก urllib.request คำขอนำเข้า urlopen

# สำหรับการละเว้นข้อผิดพลาดของใบรับรอง SSL

ctx = ssl.create_default_context()
ctx.check_hostname = เท็จ
ctx.verify_mode = ssl.CERT_NONE

# ข้อมูลจากผู้ใช้

url = อินพุต ('ป้อน URL วิดีโอ Youtube- ')

# ทำให้เว็บไซต์เชื่อว่าคุณกำลังเข้าถึงโดยใช้เบราว์เซอร์ Mozilla

req = คำขอ (url, headers={'User-Agent': 'Mozilla/5.0'})
หน้าเว็บ = urlopen(req).read()

# การสร้างวัตถุ BeautifulSoup ของหน้า html เพื่อให้ดึงข้อมูลได้ง่าย

ซุป = BeautifulSoup (หน้าเว็บ 'html.parser')
html = soup.prettify('utf-8')
video_details = {}
other_details = {}

สำหรับช่วงใน soup.findAll('span',attrs={'class': 'watch-title'}):
video_details['TITLE'] = span.text.strip()

สำหรับสคริปต์ใน soup.findAll('script',attrs={'type': 'application/ld+json'}):
channelDesctiption = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = channelDesctiption['itemListElement'][0]['item']['name']

สำหรับ div ใน soup.findAll('div',attrs={'class': 'watch-view-count'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()

สำหรับปุ่มใน soup.findAll('button',attrs={'title': 'I like this'}):
video_details['LIKES'] = button.text.strip()

สำหรับปุ่มใน soup.findAll('button',attrs={'title': 'I dislike this'}):
video_details['DISLIKES'] = ปุ่ม.ข้อความ.แถบ()

สำหรับช่วงใน soup.findAll('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip ()

แฮชแท็ก = []
สำหรับช่วงใน soup.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'}):
สำหรับ span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
แฮชแท็ก.append(a.text.strip())
video_details['HASH_TAGS'] = แฮชแท็ก

ด้วย open('output_file.html', 'wb') เป็นไฟล์:
ไฟล์.write(html)

ด้วย open('data.json', 'w', encoding='utf8') เป็นไฟล์ outfile:
json.dump(video_details, outfile, sure_ascii=False,indent=4)

พิมพ์ ('———-การดึงข้อมูลเสร็จสมบูรณ์ ตรวจสอบไฟล์ json.———-')
[/รหัส]

เมื่อคุณรันโค้ด คุณจะพบ JSON ที่สร้างขึ้นในไดเร็กทอรีปัจจุบันของคุณ โดยมีชื่อ data.json เรารันโค้ดสำหรับมิวสิกวิดีโอยอดนิยม และนี่คือ JSON ที่เกี่ยวข้องกับพวกเขา-

1. Thunder โดย Imagine Dragons –

[รหัสภาษา =”หลาม”]

{
“TITLE”: “Imagine Dragons – Thunder”,
“CHANNEL_NAME”: “ImagineDragonsVEVO”,
“NUMBER_OF_VIEWS”: “1,182,556,781 การดู”,
“ชอบ”: “6,693,559”,
“ไม่ชอบ”: “337,823”,
“NUMBER_OF_SUBSCRIPTIONS”: “17M”,
“HASH_TAGS”: []
}

[/รหัส]

2. ในความรู้สึกของคุณ โดย Drake

[รหัสภาษา =”หลาม”]
{
“TITLE”: “Drake – In My Feelings (เนื้อเพลง, เสียง) “Kiki Do you love me””,
“CHANNEL_NAME”: “เอกภาพพิเศษ”,
“NUMBER_OF_VIEWS”: “278,121,686 การดู”,
“ชอบ”: “2,407,688”,
“ไม่ชอบ”: “114,933”,
“NUMBER_OF_SUBSCRIPTIONS”: “614K”,
“HASH_TAGS”: [
“#InMyFeelings”,
“#เดรก”,
"#แมงป่อง"
]
}
[/รหัส]

รหัสโปรแกรมรวบรวมข้อมูลของ YouTube อธิบาย:

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

เราใช้ BeautifulSoup (BS4) เพื่อดึงข้อมูลจากตำแหน่งเฉพาะในโค้ด HTML-

  1. องค์ประกอบประเภท span ที่มีคลาสเป็น 'watch-title' คือที่ที่คุณสามารถค้นหาชื่อวิดีโอได้
  2. องค์ประกอบสคริปต์ที่มีประเภท 'application/ld+json' มีชื่อช่อง
  3. องค์ประกอบ div ที่มีจำนวนการดู-จำนวนการดูคลาส จะช่วยให้คุณได้รับจำนวนการดูวิดีโอ YouTube นั้นโดยเฉพาะ
  4. องค์ประกอบปุ่มที่มีชื่อ 'ฉันชอบสิ่งนี้' มีการนับจำนวนการชอบในวิดีโอนั้น ๆ
  5. คล้ายกับประเด็นข้างต้น องค์ประกอบปุ่มที่มีชื่อ 'ฉันไม่ชอบสิ่งนี้' มีจำนวนการไม่ชอบในวิดีโอหนึ่งๆ
  6. องค์ประกอบ span ที่มีคลาส 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' เป็นองค์ประกอบหนึ่งที่คุณสามารถดึงจำนวนผู้ติดตามไปยังช่องที่อัปโหลดวิดีโอนั้นโดยเฉพาะ
  7. การค้นหาแฮชแท็กที่เกี่ยวข้องกับวิดีโอนั้นซับซ้อนกว่าจุดข้อมูลอื่นๆ เล็กน้อย ขั้นแรก คุณต้องแยกช่วงทั้งหมดด้วยคลาส 'standalone-collection-badge-renderer-text' จากนั้นให้แยก a-tag ทั้งหมดด้วย class- 'yt-uix-sessionlink' การแยกข้อความในแท็ก a ทั้งหมดลงในอาร์เรย์ คุณจะสามารถสร้างรายการแฮชแท็กได้ คุณสามารถเพิ่มอาร์เรย์นี้ลงในผลลัพธ์ json ภายใต้คีย์เฉพาะที่เรียกว่า 'HASH_TAGS' เพื่อรับข้อมูลในรูปแบบที่มีโครงสร้างในผลลัพธ์สุดท้าย json

จุดข้อมูลใดที่คุณสามารถขูดจาก Youtube ได้

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

ชื่อ

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

ชื่อช่อง

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

จำนวนการดู

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

ชอบ

การชอบบนวิดีโอ YouTube เป็นเพียงเปอร์เซ็นต์ของผู้ชมที่ชอบวิดีโอนั้นมากพอที่จะคลิกปุ่มยกนิ้วโป้งด้านล่างวิดีโอ

ไม่ชอบ

เช่นเดียวกับจุดข้อมูลข้างต้น จำนวนการไม่ชอบจะเป็นตัวกำหนดจำนวนการคลิกปุ่มไม่ชอบสำหรับวิดีโอ

จำนวนการสมัคร

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

แฮชแท็ก

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

บทสรุป

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


ต้องการความช่วยเหลือในการดึงข้อมูลเว็บหรือไม่?

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

อ๊ะ! เราไม่พบแบบฟอร์มของคุณ

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