Проблема с парсером Python в PyCharm. (Начинающий) - PullRequest
0 голосов
/ 09 мая 2020

Я недавно начал изучать Python. В процессе изучения веб-скрапинга я последовал примеру парсинга из Новостей Google. После запуска моего кода я получаю сообщение: «Процесс завершен с кодом выхода 0» безрезультатно. Если я изменю URL-адрес на «https://yahoo.com», я получу результаты. Может ли кто-нибудь указать, что, если я что-то делаю не так?

Код:

import urllib.request
from bs4 import BeautifulSoup


class Scraper:
def __init__(self, site):
    self.site = site

def scrape(self):
    r = urllib.request.urlopen(self.site)
    html = r.read()
    parser = "html.parser"
    sp = BeautifulSoup(html, parser)
    for tag in sp.find_all("a"):
        url = tag.get("href")
        if url is None:
             continue
        if "html" in url:
            print("\n" + url)

news = "https://news.google.com/"
Scraper(news).scrape()

1 Ответ

0 голосов
/ 09 мая 2020

Попробуйте это:

import urllib.request
from bs4 import BeautifulSoup


class Scraper:

    def __init__(self, site):
        self.site = site

    def scrape(self):
        r = urllib.request.urlopen(self.site)
        html = r.read()
        parser = "html.parser"
        sp = BeautifulSoup(html, parser)
        for tag in sp.find_all("a"):
            url = tag.get("href")
            if url is None:
                continue
            else:
                print("\n" + url)


if __name__ == '__main__':
    news = "https://news.google.com/"
    Scraper(news).scrape()

Первоначально вы проверяли каждую ссылку, чтобы увидеть, содержит ли она в ней «html». Я предполагаю, что пример, которому вы следовали, проверял, заканчиваются ли ссылки на '.html;

Красивый суп работает действительно хорошо, но вам нужно проверить исходный код на веб-сайте, который вы собираете, чтобы понять за то, как выложен код. Инструменты разработчика в chrome отлично подходят для этого, F12, чтобы получить их быстро.

Я удалил:

if "html" in url:
            print("\n" + url)

и заменил его на:

else:
    print("\n" + url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...