私はPython初心者です。Python3でBeautiful Soup 4を使用してWebクローラーを作成しようとしています。チャンネルのリンクが入力されると、チャンネル名、チャンネルの説明、チャンネルによって投稿された動画、視聴回数、およびそれらの動画へのリンクがスクラップされます。 は、ここでは、コードです:Pythonを使用してBeautiful Soup 4の特定のクラスタグで 'title'を取得できない
from tkinter import *
from bs4 import BeautifulSoup
import re
import requests
def Info_channel():
links=link.get()
r=requests.get(links)
soup=BeautifulSoup(r.content,"lxml")
channelname= "Channel Name:" + soup.title.string
first=Label(text=channelname,fg='yellow',bg='black').place(x=0,y=0)
vid_name,viewstr,view_count,disp_link=None,None,None,None
placer=0
placer1 = 0
space = 0
for name in soup.find_all('a',class_="yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2"):
vid_name=name.text
second=Label(text=vid_name,fg='black',bg='white').place(x=200,y=40+space)
space=space+20
desc_list=soup.find_all(attrs={'name':'description'})
desc=desc_list[0]['content']#.encode('utf-8')
third=Label(text=desc,fg='black',bg='yellow').place(x=0,y=20)
for view_find in soup.find_all('li'):
viewstr=view_find.text
view=re.findall('[0-9]+,[0-9]+ views',viewstr)
for views in view:
view_count=Label(text=views,fg='blue').place(x=650,y=40+placer)
placer=placer + 20
for all_links in soup.find_all('a',class_="yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2"):
vid_link=all_links.get('href')
final_link="https://www.youtube.com"+vid_link
disp_link=Label(text=final_link).place(x=750,y=40+placer1)
placer1=placer1+20
gui=Tk()
gui.geometry('500x400')
gui.title('YouTube Crawler')
label=Label(text='Paste Link Here',fg='blue')
label.pack()
link=StringVar()
entry=Entry(gui,textvariable=link)
entry.pack()
channel=Button(text='Crawl this Channel',fg='white',bg='black',width=30,command=Info_channel)
channel.place(x=10,y=45)
entry.focus_set()
url=entry.get()
gui.mainloop()
私が午前問題はこの部分である:例えばのために
for name in soup.find_all('a',class_="yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2"):
vid_name=name.text
second=Label(text=vid_name,fg='black',bg='white').place(x=200,y=40+space)
space=space+20
:上記のリンク
https://www.youtube.com/user/MetallicaTV
はチャンネル内のビデオを持っています上の検査要素は
a `class ="yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2" dir="ltr" title="Metallica: Hardwired (Official Music Video)"`
タイトル「Metallica:Hardwired(Official Music Video)」の部分を抽出します。
私が直面している問題は、コードが上記のforループ(soup.find_allの名前に対して.............)を全く入力しないことです。一部が始まらない!
どこが間違っているのでしょうか?
出力は私が取得: Output image
男は、あなたの美しさ!あなたは私を救った、それは今完全にビデオ名を表示します。しかし、2番目のforループ:soup.find_all ...........のall_linkについてはまだ手つかずのままですが、このループでも述べたようにスペースを削除しましたが、動作しません。なにか提案を? –
男、あなたは美人です!あなたは私を救った、それは今完全にビデオ名を表示します。しかし、2番目のforループ:soup.find_all ...........のall_linkについてはまだ手つかずのままですが、このループでも述べたようにスペースを削除しましたが、動作しません。なにか提案を? –
@AyushGoyal - あなたは試しましたか? 'soup.find_all(' a '、class _ = "yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2 "):'? –