前提・実現したいこと
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
1from selenium import webdriver 2import urllib.request as req 3from bs4 import BeautifulSoup 4 5driver = webdriver.Chrome("C:\ProgramData\Anaconda3\chromedriver") 6 7driver.get("https://www.youtube.com/") 8 9textbox = driver.find_element_by_id("search") 10btn = driver.find_element_by_id("search-icon-legacy") 11 12keyword = "dyson" #←ここがひらがなになるとエラーになります。 13 14textbox.send_keys(keyword) 15btn.click() 16 17url = "https://www.youtube.com/results?search_query="+keyword 18html = req.urlopen(url) 19 20soup = BeautifulSoup(html,"html.parser") 21 22date = soup.select("a#video-title") 23 24for a in date: 25 b = a.string 26 c = a.attrs["href"] 27 28 print(b,"リンク→",c) 29
上記内容の対処法、ご教授下さい。
ご解答よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/23 13:09