Как очистить результаты поиска после входа на сайт с использованием Python и beautifulsoup4? - PullRequest
1 голос
/ 07 апреля 2019

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

Мне как-то удалось войти в систему, используя python и запросы, но когда я делаю запрос get на странице, я хочу выполнить поиск или всякий раз, когда я делаю запрос на публикацию на этой странице, все критерии поиска передаются в тело, я не получаю никаких результатов поиска. Вместо этого заголовок по-прежнему гласит «Вход на страницу», который является заголовком страницы входа, поэтому почему-то кажется, что я не могу выполнить какую-либо операцию REST после входа в систему. Есть ли какой-либо конкретный способ удалить сайт, когда это требуется один для входа, а затем выполнить поиск ??

Вот моя попытка:

import requests
from lxml import html
from bs4 import BeautifulSoup

USERNAME = "abcdefgh"
PASSWORD = "xxxxxxx"

LOGIN_URL = "https://www.assortis.com/en/login.asp"
URL = "https://www.assortis.com/en/members/bsc_search.asp?act=sc"
SEARCH_URL = "https://www.assortis.com/en/members/bsc_results.asp"


def scrapeIt():
    session_requests = requests.session()

    #login
    result = session_requests.get(LOGIN_URL)
    tree = html.fromstring(result.text)
    # print(tree)

    # Create payload
    payload = {
        "login_name": USERNAME,
        "login_pwd": PASSWORD,
        "login_btn": "Login"
    }

    search_payload = {
        'mmb_cou_hid': '0,0',
        'mmb_don_hid': '0,0',
        'mmb_sct_hid': '0,0',
        'act': 'contract',
        'srch_sdate': '2016-01-01',
        'srch_edate': '2018-12-31',
        'procurement_type': 'Services',
        'srch_budgettype': 'any',
        'srch_budget': '',
        'srch_query': '',
        'srch_querytype': 'all of the words from'
    }
    # Perform login
    result = session_requests.post(LOGIN_URL, data=payload, headers=dict(referer=LOGIN_URL))

    # Scrape url
    result = session_requests.get(URL, headers=dict(referer=URL))
    result = session_requests.post(SEARCH_URL, data=search_payload, headers=dict(referer=SEARCH_URL))
    content = result.content
    # print(content)
    data = result.text
    soup = BeautifulSoup(data, 'html.parser')

    print(soup)


scrapeIt()

Любая помощь будет оценена. Спасибо.

РЕДАКТИРОВАТЬ: возможно, веб-страница на JavaScript

1 Ответ

0 голосов
/ 13 апреля 2019

сохраните ваш response.text в локальный файл после того, как вы вошли в систему, чтобы увидеть, действительно ли вы вошли в систему, проверьте файл в противном случае, вместо обратного инжиниринга http-запросов, попробуйте selenium chromedriver

, часть регистрациипроще с селеном, но найти что-то на странице нет, используйте wait для исключений для динамической загрузки, driver.page_source, чтобы увидеть html, иногда браузер пишет html по-другому, например: <tbody> tags

...