AttributeError: у объекта 'function' нет атрибута 'read' - PullRequest
1 голос
/ 05 мая 2019

Я получаю сообщение об ошибке для программы, которая извлекает (ищет) данные из YouTube и показывает ошибку AttributeError: у объекта 'function' нет атрибута 'read', я нахожусь на python3

import urllib.request
from bs4 import BeautifulSoup
import sys

flag = 0
textToSearch = 'hello world'
query = sys.argv[0].strip("\"").replace(" ","+")
url = "https://www.youtube.com/results?search_query=" + query

response = urllib.request.urlopen
html = response.read()

soup = BeautifulSoup(html,"lxml")
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
if ('https://www.youtube.com' + vid['href']).startswith("https://www.youtube.com/watch?v="):
    flag = 1
print ('https://www.youtube.com' + vid['href'])
if flag == 0:
    print ("No results found") ```

Ответы [ 2 ]

1 голос
/ 05 мая 2019

вы пробовали использовать библиотеку запросов?

как это:

import requests
from bs4 import BeautifulSoup
import sys

flag = 0
textToSearch = 'hello world'
query = sys.argv[0].strip("\"").replace(" ","+")
url = "https://www.youtube.com/results?search_query=" + query

response = requests.get(url)
html = response.content

soup = BeautifulSoup(html,"lxml")
for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
    if ('https://www.youtube.com' + vid['href']).startswith("https://www.youtube.com/watch?v="):
        flag = 1
    print ('https://www.youtube.com' + vid['href'])
    if flag == 0:
        print ("No results found")
0 голосов
/ 05 мая 2019

Здесь была допущена ошибка:

response = urllib.request.urlopen
html = response.read()

Вы помещаете urllib.request.urlopen в переменную response вместо результата вызова этой функции.

То есть вместо

response = urllib.request.urlopen

Вы должны вызывать его с соответствующими параметрами:

response = urllib.request.urlopen( .. parameters come here ... )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...