前提・実現したいこと
pythonのスクレイピングを勉強中です。
適当なサイトのリンクや文字列を抽出しながら勉強しています。
発生している問題・エラーメッセージ
youtubeの動画のリンクを抽出しようとした所
- <a>タグのidを上手く指定できずに困っています。
soup.select("a") だとちゃんと抽出してくれるのですが,idを指定して
soup.select("a#video-title")やクラスを指定しての
soup.select("a.yt-simple-endpoint style-scope ytd-video-renderer")だと何もかえってきません
エラーが出る事なく処理は終了します。
.
- URLにひらがなが入るとurlopen()の所でエラーが出てしまいます。
以下エラーコード
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\Scripts\sc3.py", line 19, in <module>
html = req.urlopen(url)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 526, in open
response = self._open(req, data)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 544, in _open
'_open', req)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 504, in _call_chain
result = func(*args)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1361, in https_open
context=self._context, check_hostname=self._check_hostname)
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 1318, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1250, in _send_request
self.putrequest(method, url, **skips)
File "C:\ProgramData\Anaconda3\lib\http\client.py", line 1117, in putrequest
self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-27: ordinal not in range(128)
該当のソースコード
python
from selenium import webdriver import urllib.request as req from bs4 import BeautifulSoup driver = webdriver.Chrome("C:\ProgramData\Anaconda3\chromedriver") driver.get("https://www.youtube.com/") textbox = driver.find_element_by_id("search") btn = driver.find_element_by_id("search-icon-legacy") keyword = "dyson" #←ここがひらがなになるとエラーになります。 textbox.send_keys(keyword) btn.click() url = "https://www.youtube.com/results?search_query="+keyword html = req.urlopen(url) soup = BeautifulSoup(html,"html.parser") date = soup.select("a#video-title") for a in date: b = a.string c = a.attrs["href"] print(b,"リンク→",c)
上記内容の対処法、ご教授下さい。
ご解答よろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう