Рубрики
Без рубрики

Скачка от Google & Visualing самое распространенное слово с WordCloud

Вы пытались искать свое имя в Google? Или чье-то имя? Какое самое распространенное слово связано с вашим именем? В этом руководстве мы узнаем :). Помечено с Python, соскоб, складками.

Вы пытались искать свое имя в Google? Или чье-то имя? Какое самое распространенное слово связано с вашим именем? В этом руководстве мы узнаем:)

Требования:

  • Питон
  • Интернет-соединение:)

У нас есть 2 раздела в этом руководстве. Scraping а также Визуализация

Установка Scrapy:

pip install scrapy

Первая попытка

Давайте создадим наш проект.

scrapy startproject google
cd google

Давайте попробуем поиск вашего имени в Google. Я собираюсь полагать, что ваше зовут Сукиджан Отказ

Получить весь текст

Давайте постараемся получить весь текст с URL. Я попробую с этим URL https://www.aljazeera.com/news/2019/06/iseali-Forces-settlers-enter-al-aqsa-mosque-compount-190602065712978.html (Одна из первых новостей у меня сегодня утром)

Создать файл Google/Google/Spiders/test.py

import scrapy


class TestSpider(scrapy.Spider):
    name = 'test'

    # Tell scrapy, we want to start crawing with these pages
    start_urls = [
        'https://www.aljazeera.com/news/2019/06/israeli-forces-settlers-enter-al-aqsa-mosque-compound-190602065712978.html']

    # What we're going to do after the page is resolved
    def parse(self, response):
        # We yield a dict of this
        yield {
            # response.css is css style selector.
            # ::text means we want to to get the text. If we don't put ::text
            # We'll get Israeli forces and settlers ...
            # When we add text we got 'Israeli forces and settlers ...'
            'title': response.css('title::text').get(),
            # Same thing with `p`, We're selecting the text of element p
            # But notice that we use `getall` instead of `get`
            # `get` will select only one element.
            # While `getall`  Will select all element, and return list
            'text': response.css('p::text').getall()
        }

Теперь попробуйте запустить Тест Scrapy Crawl. .Вы будете Смотрите в результате в командной строке.

Давайте попробуем написать результат в файл с Scrapy Crawl Test -o результат .json

Теперь вы можете увидеть результат в формате JSON в Результат

Получить ссылки из Google

Давайте попробуем ползти много URL из Google

Прежде всего. Перейти к settings.py и убедитесь

...
ROBOTSTXT_OBEY = False
...
import scrapy
import re


def is_google(a):
    url = a.attrib['href']
    return bool(re.search("/search", url))


class TestSpider(scrapy.Spider):
    name = "test"

    # How to get the start url
    # search `sukijan` on Google. And then go to second page, and then click first page result. You'll see that the url now includes `start` parameter. We'll use that for pagination
    # Also pay attention to parameter `q=sukijan`. That's our keyword
    # We use `% start for start in range(0, 100, 10)`. To generate urls that we want to crawl
    # So it will generate a list of urls like so
    # [q=sukijan start =0, q=sukijan start=10, q=sukijan start=20, q=sukijan, start=30... until 100]

    start_urls = [
        'https://www.google.com/search?q=sukijan&safe=strict&ei=sLTvXL_KH4zfz7sPpZOBuA4&start=%s&sa=N&ved=0ahUKEwi_4un2icPiAhWM73MBHaVJAOc4ChDx0wMIjQE&cshid=1559213273144254&biw=1680&bih=916' % start for start in range(0, 100, 10)
    ]

    def parse(self, response):
        # What is `jfp3ef a`
        # If you do `scrapy shell https://www.google.com/search?q=Sukijan&oq=sukijan&aqs=chrome.0.69i59j0l5.1739j0j7&sourceid=chrome&ie=UTF-8#ip=1`
        # And then do `view(response)`. It will open up a browser
        # From there do inspect element, locate a link, And you'll find that most of the links fall under `.jfp3ef` class
        for href in response.css('.jfp3ef a'):
            # We want to open url these links. But we don't want to open Google's url
            # For example url `More images for Sukijan`, etc.
            if not is_google(href):
                # This basically means 'Hey scrapy` follow this url.
                # When you find it run parse_text function on it.
                yield response.follow(href, self.parse_text)

    def parse_text(self, response):

        # get_text takes the response
        # And then it will takes all text whether it's in 

tag,

tag,

tag etc # But it will leave everything inside

Оригинал: “https://dev.to/muhajirdev/scraping-from-google-visualizing-most-common-word-with-wordcloud-4mko”