Как определить парсер при использовании BS4 в Python - PullRequest
0 голосов
/ 11 ноября 2018
#!/usr/bin/env python

import requests
from bs4 import BeautifulSoup

url = "https://www.youtube.com/channel/UCaKt8dvEIPnEHWSbLYhzrxg/videos"
response = requests.get(url)
# parse html
page = str(BeautifulSoup(response.content))


def getURL(page):
    """

    :param page: html of web page (here: Python home page) 
    :return: urls in that page 
    """
    start_link = page.find("a href")
    if start_link == -1:
        return None, 0
    start_quote = page.find('"', start_link)
    end_quote = page.find('"', start_quote + 1)
    url = page[start_quote + 1: end_quote]
    return url, end_quote

while True:
    url, n = getURL(page)
    page = page[n:]
    if url:
        print(url)
    else:
        break

Я использую приведенный выше код для получения списка всех видео YouTube на веб-странице. Если я попытаюсь сделать это. Я получаю следующую ошибку

The code that caused this warning is on line 9 of the file C:/Users/PycharmProjects/ReadCSVFile/venv/Links.py. To get rid of this warning, change code that looks like this:

Я сделал и начал использовать html, но появилась другая ошибка.

Я использую Python 3.0. Я использую IDE Pycharm.

Может кто-нибудь, пожалуйста, помогите мне в этом.

1 Ответ

0 голосов
/ 11 ноября 2018

это не ошибка, но предупреждение, что вы не установили парсер, который может быть 'html.parser', 'lxml', 'xml'. замените его на

page = BeautifulSoup(response.content, 'html.parser')

Ваш код выше на самом деле не делает то, что BeautifulSoup делает, но вот пример, использующий его.

#!/usr/bin/env python

import requests
from bs4 import BeautifulSoup

def getURL(url):
    """
    :param url: url of web page
    :return: urls in that page 
    """
    response = requests.get(url)
    # parse html
    page = BeautifulSoup(response.content, 'html.parser')
    link_tags = page.find_all('a')
    urls = [x.get('href') for x in link_tags]
    return urls

url = "https://www.youtube.com/channel/UCaKt8dvEIPnEHWSbLYhzrxg/videos"
all_url = getURL(url)
print('\n'.join(all_url))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...