Как создать веб-сайт, содержащий всплывающее окно, используя python? - PullRequest
1 голос
/ 27 марта 2020

Я пытаюсь очистить определенную часть сайта etherscan с помощью python, поскольку для этой функции нет API. В основном идет к этой ссылке , и нужно будет нажать «Подтвердить», после чего появится всплывающее окно, которое вы можете увидеть здесь . Что мне нужно почистить, так это часть 0x0882477e7895bdc5cea7cb1552ed914ab157fe56 на случай, если сообщение начинается с сообщения, как показано на рисунке.

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

from bs4 import BeautifulSoup
from requests import get

headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0','X-Requested-With': 'XMLHttpRequest',}
url = "https://etherscan.io/proxyContractChecker?a=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
response = get(url,headers=headers )
soup = BeautifulSoup(response.content,'html.parser')

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2020
import requests
from bs4 import BeautifulSoup


def Main(url):
    with requests.Session() as req:
        r = req.get(url, headers={'User-Agent': 'Ahmed American :)'})
        soup = BeautifulSoup(r.content, 'html.parser')
        vs = soup.find("input", id="__VIEWSTATE").get("value")
        vsg = soup.find("input", id="__VIEWSTATEGENERATOR").get("value")
        ev = soup.find("input", id="__EVENTVALIDATION").get("value")
        data = {
            '__VIEWSTATE': vs,
            '__VIEWSTATEGENERATOR': vsg,
            '__EVENTVALIDATION': ev,
            'ctl00$ContentPlaceHolder1$txtContractAddress': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
            'ctl00$ContentPlaceHolder1$btnSubmit': "Verify"
        }
        r = req.post(
            "https://etherscan.io/proxyContractChecker?a=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", data=data, headers={'User-Agent': 'Ahmed American :)'})
        soup = BeautifulSoup(r.content, 'html.parser')
        token = soup.find(
            "div", class_="alert alert-success").text.split(" ")[-1]
        print(token)


Main("https://etherscan.io/proxyContractChecker")

Выход:

0x0882477e7895bdc5cea7cb1552ed914ab157fe56
0 голосов
/ 27 марта 2020

Я не согласен с @InfinityTM. Обычно рабочий процесс, который следует за такими проблемами, заключается в том, что вам нужно будет отправить запрос POST на веб-сайт.

Посмотрите, если вы нажмете Подтвердить , запрос POST будет выполнен в веб-сайт, как показано на этом изображении:

After Verify was clicked

Этот POST запрос был сделан с этими заголовками :

Request Headers

и с этими параметрами :

Params

Вам необходимо выяснить, как отправить этот запрос POST с правильными URL, заголовками, параметрами и файлами cookie. После того как вы выполнили запрос, вы получите ответ :

Response

, который содержит информацию, которую вы хотите удалить в div с классом "alert alert-success :

Сводка

Итак, вам необходимо выполнить следующие шаги:

  1. Перейдите на свой веб-сайт и соберите всю информацию (URL запроса, файлы cookie, заголовки и параметры), которая понадобится вам для запроса POST .
  2. Сделайте запрос с помощью запросы библиотека.
  3. Получив ответ <200>, удалите интересующие вас данные с помощью BS.

Пожалуйста, дайте мне знать, если это указывает вам в правильном направлении!: D

...