Очистка данных: веб-страница не существует, если я не загружаю ее через основной веб-сайт - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь очистить данные с нескольких веб-страниц с помощью BeautifulSoup. Каждая из этих веб-страниц имеет одинаковый формат с кодом в конце, который однозначно идентифицирует их, например, для. www.sample_000.com. Проблема в том, что если я случайно выберу код 123 и попытаюсь очистить www.sample_123.com, я ничего не получу, так как страница не существует. Я получаю ошибку HTTP 404, если пытаюсь открыть ее из браузера напрямую. Однако, если я захожу на основной веб-сайт и выбираю соответствующие входные значения, чтобы открыть www.sample_123.com, он загружается просто отлично.

После загрузки его один раз с основного веб-сайта, теперь я могу очистить его и открыть его в браузере независимо, не заходя на основной веб-сайт. Что здесь происходит и как я могу очистить эти веб-страницы, не открывая их сначала через главный веб-сайт?

Обновление: я пытался использовать Selenium для загрузки каждой веб-страницы с использованием соответствующих входных данных перед ее очисткой. Это работает сейчас, но невероятно медленно. Был бы очень признателен, если кто-то, если порекомендовать более быстрый метод.

Ответы [ 2 ]

1 голос
/ 14 октября 2019

как только вы получите https://mnregaweb2.nic.in/netnrega/writereaddata/state_out/jobcardreg_1719004041_local.html,, можно легко утилизировать с requests или scrapy любые другие пакеты веб-запросов. Но получить список URL-адресов с основного сайта немного сложно. Основной веб-сайт https://mnregaweb2.nic.in/netnrega/loginframegp.aspx?page=C&state_code=17 фактически работает с базой данных. Каждый раз, когда вы выбираете опцию, вы фактически отправляете http-запрос на сервер. Затем сервер возвращает ответ, который далее интерпретируется движком javascript в вашем браузере. Таким образом, почему вы не можете просто удалить html, поскольку URL _local.html фактически отсутствует в главном окне. Вы должны отобразить их один за другим, нажав кнопку «Продолжить».

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

1 голос
/ 14 октября 2019

попробуйте этот код, просто измените местоположение вашего хроматографа:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import WebDriverException

chrome_path = r"path_to_chromedriver"
driver = webdriver.Chrome(chrome_path)
driver.implicitly_wait(1)
driver.maximize_window()

link = "https://mnregaweb2.nic.in/netnrega/writereaddata/state_out/jobcardreg_1719004041_local.html"

driver.get(link)
...