найдите «Параметры строки запроса» URL-адреса со страницы .aspx для очистки - PullRequest
0 голосов
/ 31 октября 2019

Я использую beautifulsoup и requests библиотеки Python для очистки. Обычно URL целевой страницы можно увидеть в браузере. Но иногда его не видно в браузере, поэтому его легко узнать с помощью инструментов разработчика> Сетевые вкладки Query String Parameters из Chrome.

Но я не могу найти "Параметры строки запроса" на странице https://www.imo -official.org / search.aspx .

Кто-нибудь мне поможет? как найти параметры «поиска любого значения» на этой странице?

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

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

import requests
import pandas as pd
from bs4 import BeautifulSoup as bs

data = {
  '__VIEWSTATE': '',
    '__VIEWSTATEGENERATOR': '',
  '__EVENTVALIDATION': '',
  'ctl00$CPH_Main$TextBox1': '',
  'ctl00$CPH_Main$Button1': 'Search',
  'ctl00$CPH_Main$CheckBox_Contestant': 'on',
  'ctl00$CPH_Main$DropDownListFrom': '1959',
  'ctl00$CPH_Main$DropDownListTo': '2019'
}

def get_results(search_term):
    with requests.Session() as s:
        r = s.get('https://www.imo-official.org/search.aspx')
        soup = bs(r.content, 'lxml')
        d = {i['id']:i['value'] for i in soup.select('[type="hidden"]')}
        for k,v in d.items():
            data[k]=v
        data['ctl00$CPH_Main$TextBox1'] = search_term
        r = s.post('https://www.imo-official.org/search.aspx', data=data)
        soup = bs(r.content, 'lxml')
        df = pd.read_html(str(soup.select('table')[1]))[0]
        return df

print(get_results('Zhuo Qun Song'))
0 голосов
/ 31 октября 2019

Вы не видите строку запроса, потому что кнопка поиска отправляет запрос POST в этом случае. Вы видите строки запроса, такие как ?q=cats в GET запросах.

Вы можете отправлять POST запросов, используя requests, например:

url = "https://example.com"
formdata = {name:'jon',age:'21'}
response = requests.request(method='POST',url=url,data=formdata)

Перейдите на вкладки Сеть, и выможно найти данные формы и другие значения, которые вы, возможно, захотите передать в качестве аргументов.

Подробнее об этом можно прочитать в w3schools

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...