Python Forum

Full Version: Resolving YouTube search links
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
(Aug-01-2020, 06:45 PM)pythonnewbie138 Wrote: [ -> ]I started looking into Selenium but I want the script to be OS-independent and Selenium only works on Linux
Look at web-scraping part-2 and search forum there is a lot info about this.

(Aug-01-2020, 06:45 PM)pythonnewbie138 Wrote: [ -> ]I'll probably use a YouTube API wrapper when I get back to this.
Can use YouTube API directly with Requests.
This is the same as would enter a python in the search-box on youtube.com.
import requests

api_key = 'xxxyour-keyxxx'
search = 'python'
how_many_hit = 10

response = requests.get(f'https://www.googleapis.com/youtube/v3/search?part=snippet\
               &maxResults={how_many_hit}&q={search}&type=video&key={api_key}')

hits = response.json()
print(hits['items'][0]['snippet']['title'])
print(hits['items'][0]['snippet']['channelId'])
Output:
Learn Python - Full Course for Beginners [Tutorial] UC8butISFwT-Wl7EV0hUK0BQ
Thanks for all the input everyone. These are some awesome solutions!
(Aug-02-2020, 12:00 AM)snippsat Wrote: [ -> ]
Output:
Learn Python - Full Course for Beginners [Tutorial] UC8butISFwT-Wl7EV0hUK0BQ

Why does this only print a single result when how_many_hit = 10?
(Aug-02-2020, 07:26 PM)pythonnewbie138 Wrote: [ -> ]Why does this only print a single result when how_many_hit = 10?
All 10 search hit is in hits = response.json()
I did choose to take out first search hit as a demo,could of course have written a loop that printed out those values i wanted from all 10 hit.
(Aug-02-2020, 10:27 PM)snippsat Wrote: [ -> ]I did choose to take out first search hit as a demo,could of course have written a loop that printed out those values i wanted from all 10 hit.

I'm confused on the syntax when putting this into a loop. I can create a loop just fine but the list index [0] is confusing me (probably because this is my first time working with json). Changing the index works to target a single search result but I'm unsure how to modify the syntax of the print statement to make it loop over the entire json instead of just a single index number.
(Aug-04-2020, 02:38 PM)pythonnewbie138 Wrote: [ -> ]but the list index [0] is confusing me (probably because this is my first time working with json)
Back from .json() we are getting a Python dictionary,this usually contain both dictionaries and lists when coming from JSON.
So [0] is used when access a element in that list.
Using a loop then index assess can go away,as now looping over all items.
import requests

api_key = 'xxxxxx'
search = 'python'
how_many_hit = 10

response = requests.get(f'https://www.googleapis.com/youtube/v3/search?part=snippet\
               &maxResults={how_many_hit}&q={search}&type=video&key={api_key}')

hits = response.json()
for hit in hits['items']:
    print(hit['snippet']['title'])
Output:
Learn Python - Full Course for Beginners [Tutorial] Python Tutorial - Python for Beginners [Full Course] What is Python? Why Python is So Popular? What Can You Do with Python? - The 3 Main Applications Python Tutorial for Beginners - Full Course in 11 Hours [2020] Учим Python за 1 час! #От Профессионала Python for Everybody - Full Course with Dr. Chuck Python超入門コース 合併版|Pythonの超基本的な部分をたった1時間で学べます【プログラミング初心者向け入門講座】 Lập Trình Cơ Bản PYTHON Tự Học Cho Người Mới Bắt Đầu Belajar Python [Dasar] - 01 - Apa Itu Python
(Aug-04-2020, 04:17 PM)snippsat Wrote: [ -> ]for hit in hits['items']:
print(hit['snippet']['title'])[/python]

That makes sense. I tried removing the index but kept ['items'] in the print statement. Thank you so much for your help!
Pages: 1 2