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

Создание веб-описания Twitter Bot в Python.

Давайте посмотрим на создание в Twitter Bot, который запирает информацию из одной части сети, а затем плевает … Теги с Python, Twitter, учебником.

Давайте посмотрим на создание бота в Твиттере, которые запирают информацию из одной части сети, а затем выпрыгивают в Twitter. Есть несколько хороших примеров, если вы хотите создать идеи для бота в Twitter, как @bbcbweaking , @poemexe. И мой собственный @rnghaiku Отказ В этом примере мы напишем что-то, что просто находит первый dev.to post и твиты заголовка.

Требования:

  • Питон
  • Текстовый редактор
  • Браузер
  • Терпение

Прежде чем мы пишем даже строку кода, нам нужно скачать два невероятно Мощные модули именно: Beautifulsoup и Tweepy Отказ CountrySououp будет обрабатывать WebScraping и Tweepy справится с запросами API Twitter.

WebScraping – один из самых мощных инструментов, которые имеет кодер, и это первое, что я ищу на каждом языке, который я касаюсь. Мы будем использовать Beautifulsoup Для этого, и вы можете установить его с вашего терминала со следующими:

pip install beautifulsoup4

Создайте новый документ .py и добавьте следующие строки в верхнюю часть, чтобы импортировать все функции, которые BeautificSoup (которые я буду ссылаться сейчас, как BS4), имеет для нас:

import requests
from bs4 import BeautifulSoup

Теперь вам нужно определить страницу, которую вы хотите, чтобы BS4 открыть, что вы можете поделать это:

page = reqeusts.get("http://dev.to")
soup = BeautifulSoup(page.content, "html.parser")

Чтобы проверить, что BS4 делает это работа, вы можете просто распечатать содержание этой страницы, чтобы увидеть, что у нас есть

print(soup)

Теперь мы загружаем все HTML из dev.to, который не является ни читабельным, ни Tweetable. Теперь нам нужно уточнить наш поиск, используя встроенную функцию «Найти» от BS4. Чтобы найти названия каждого поста, нам нужно погружаться в HTML Dev.to. Мы можем сделать это, либо читая все HTML (скучно, длинные, болезненные) или просто используйте ваш любимый веб-браузер, чтобы сделать то же самое.

В доме мы видим, что каждый заголовок похоронен в нескольких классах HTML и IDS. Чтобы добраться до них, нам придется копать сквозь элементы, чтобы вернуть массив заголовков. Мы можем сделать это так, и я объясню позже:

from bs4 import BeautifulSoup
import requests

page = requests.get("http://dev.to")
soup = BeautifulSoup(page.content, "html.parser")
home = soup.find(class_="articles-list crayons-layout__content")
posts = home.find_all(class_="crayons-story__indentation")

for post in posts:
    title = post.find("h2", class_="crayons-story__title")
    print(title.text.strip())

Теперь давайте пройдем через каждую строку кода в порядке.

page = requests.get("http://dev.to")
soup = BeautifulSoup(page.content, "html.parser")

Они открывают HTML-страницу и возвращает результат как bs4.beautifulsoup объект. Затем мы можем найти объекты в этом супе HTML со следующими:

home = soup.find(class_="articles-list crayons-layout__content")
posts = home.find_all(class_="crayons-story__indentation")

Если вы посмотрите на DOM над сечением красного цвета, относится ко всему внутри «Домой» переменную, а посты – все внутри зеленого. На посты теперь массив (или BS4.Element. РЕССУМАТЬ ) что мы можем перейти вперед следующим образом

for post in posts:
    title = post.find("h2", class_="crayons-story__title")
    print(title.text.strip())

Для каждого поста в списке сообщений мы ищем H2 с классом Crayons-Story__Title и распечатайте отдельный заголовок для него. Это фиолетовая часть выделенного дома. Если все пойдет правильно, вы должны увидеть список постов, как это:

Но, очевидно, мы хотим только первого из них, чтобы мы могли просто сделать следующее:

top_post = posts[0].find("h2", class_="crayons-story__title").text.strip()

Который в моем случае возвращает Хватит использовать React сообщение. Для выбора других элементов, таких как Теги Пожалуйста, ознакомьтесь с этим руководством от компюр Отказ

Во всяком случае, теперь у нас есть то, что мы хотим чирикать (что может быть любыми строками или даже изображениями) Теперь мы можем посмотреть в Tweeting.

Для этого мы будем использовать Tweepy Чья документация одинаково сильна и полезна в качестве BS4, и я рекомендую вам проверить. Установить обычным способом:

pip install tweepy

и в верхней части вашего документа Python не забудьте включить Tweepy

import tweepy

И теперь нам нужно настроить приложение Twitter для вашего бота для работы. Вы можете сделать это, собираясь здесь И создание приложения и заполнения простых форм, подтвердите вашу электронную почту, вам придется подтвердить приложение вашего разработчика. Тем временем, прежде чем мы получим наши ключи API, мы можем сделать еще несколько работ над твитом, мы хотим отправить.

from bs4 import BeautifulSoup
import tweepy
import requests

def scrape():
    page = requests.get("http://dev.to")
    soup = BeautifulSoup(page.content, "html.parser")
    home = soup.find(class_="articles-list crayons-layout__content")
    posts = home.find_all(class_="crayons-story__indention")
    top_post = posts[0].find("h2", class_="crayons-story__title").text.strip()


    tweet(top_post)

def tweet(top_post):
    consumer_key = "#"
    consumer_secret = "#"
    access_token = "#"
    access_token_secret = "#"
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth)
    api.update_status(top_post)

scrape()

Здесь многое, так что давайте медленно пройдемся через это. Функция Tweet, которую мы написали, примут один аргумент «Верхний пост», который мы выяснили в разрезе «Смара». Thumber_key , Thumber_Secret , Access_Token и Access_Token_Secret Все ли ключи API предоставлены нам Twitter и должны быть некоторая длинная нечитаемая строка. Чтобы узнать, что эти токены на самом деле я бы порекомендули, чтобы вы проверили Tweepy Документация .

Как только вы получите электронное письмо, подтверждающее ваши ключи API, обязательно скопируйте их в свою функцию, чтобы они функционируют, как и ожидалось.

Как только все это завершено, мы можем принять наш бот на AWS или моей личной рекомендации Heroku . Для хорошего руководства по хостингу бота на Heroku Пожалуйста, проверьте эту отличную статью от data_bae Отказ Теперь просто запустите свое приложение и посмотрим, что вы получите!

Я, конечно, защищаю с использованием реагирования, поскольку у меня есть надежды на получение работы в Берлине, где реагируют доминируют на рынке труда, поэтому у меня будет некоторые объяснения, чтобы сделать в моем твиттере позже.

Если у вас есть какие-либо вопросы по поводу этой статьи или мой плохой синтаксис, пожалуйста, напишите мне на @jsphwllng.

Оригинал: “https://dev.to/jsphwllng/creating-a-webscraping-twitter-bot-in-python-366b”