Как отправить очищенную веб-информацию на дискорд с помощью Python - PullRequest
0 голосов
/ 19 мая 2018
from bs4 import BeautifulSoup
import requests
import json

source = requests.get('http://www.jimmyjazz.com/mens/footwear/adidas-superstar/S82215?color=Brown').text

soup = BeautifulSoup(source, 'lxml')
page = soup.find('div', class_='box_wrapper')
size = page.find_all('a')

for pid in size:
    if "piunavailable" not in pid["class"]:   
        print("instock")
        print("http://www.jimmyjazz.com/mens/footwear/adidas-superstar/S82215?color=Brown")
    else:
        print("out of stock")

В настоящее время это то, что у меня есть, я пытался отправить информацию о том, что она очистила несколько различных способов, но не удалось отправить ее на мой дискордный веб-крючок.Я хотел бы любую помощь, спасибо!

1 Ответ

0 голосов
/ 19 мая 2018

Вы можете использовать метод post запроса, чтобы отправить отформатированную строку на ваш крючок.У меня есть опыт работы с Discord, но я не ставил Hook раньше.Если ключевое слово для поста params не работает, используйте headers.Приспособьте этот код к своему проекту и сообщите мне, если у вас есть какие-либо вопросы или другие ошибки с запросом.

import json

from bs4 import BeautifulSoup
import requests

payload = {'username': 'myname',
           'icon_url': 'myavatar.png'}

SHOE_URI = 'http://www.jimmyjazz.com/mens/footwear/adidas-superstar/S82215?color=Brown'
DISCORD_HOOK_URI = 'https://discordapp.com/whateverapi'

source = requests.get(SHOE_URI).text

soup = BeautifulSoup(source, 'html.parser')
page = soup.find('div', class_='box_wrapper')
sizes = page.find_all('a')

avail = dict() # keeps track of the status for each size

for pid in sizes:
    if "piunavailable" in pid["class"]:   
        avail[pid.getText()] = "out of stock"
    else:
        avail[pid.getText()] = "instock"

maxlen = max(map(len, avail.keys())) # for right-justified string formatting
string = '\n'.join("{:>{}}: {}".format(size, maxlen, value) for size, value in avail.items())

myheaders['content'] = string

req = requests.post(DISCORD_HOOK_URI, params=payload)
if req.status_code != 200:
   print('post failed with error', req.status_code, 'because', req.reason)
else:
   print('post success')
...