Как получить весь контент ниже селектора "colspan"? - PullRequest
0 голосов
/ 28 октября 2019

Я отправляю запрос POST, чтобы отфильтровать идентификаторы, а затем проанализировать вывод. Мне нужно получить все содержимое под селектором colspan (В конце показан ЖЕЛЕЗНЫЙ ВЫХОД). В colspan="4" есть много тегов b, table, и он содержит tbody> tr> td, но мой скрипт возвращает только b содержимое тегов.

URL: https://e -mehkeme.gov.az / Public / Cases enter image description here

import requests
from bs4 import BeautifulSoup as bs

request_headers = {
    'authority': 'e-mehkeme.gov.az',
    'method': 'POST',
    'path': '/Public/Cases',
    'scheme': 'https',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,'
              'application/signed-exchange;v=b3',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en,en-GB;q=0.9',
    'cache-control': 'max-age=0',
    'content-length': '66',
    'content-type': 'application/x-www-form-urlencoded',
    'origin': 'https://e-mehkeme.gov.az',
    'referer': 'https://e-mehkeme.gov.az/Public/Cases',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                  'Chrome/75.0.3770.142 Safari/537.36',
}

voens = {'1303450301',
         '1700393071',
         '2002283071',
         }


form_data = {
    'CourtId': '',
    'CaseNo': '',
    'DocFin': '',
    'DocSeries': '',
    'DocNumber': '',
    'VOEN': voens,
    'button': 'Search',
}

url = 'https://e-mehkeme.gov.az/Public/Cases?courtid='

response = requests.post(url, data=form_data, headers=request_headers)
s = bs(response.content, 'lxml')

# PRINT THE HEADERS!
sHeader = s.findAll('tr', {'class': 'centeredheader'})[0]
headers = [sHeader.get_text().strip()]
print(headers)

# PRINT THE CONTENTS OF EACH SEARCH!
for voen in voens:
    form_data['VOEN'] = voen
    idData = [string for string in s.select("td", colspan_="4")]
    print(idData)

ЖЕЛАЕМЫЙ ВЫХОД:

Ətraflı məlumat: 

İşə baxan hakim və ya tərkib 
Abiddin Hüseynov - sədrlik edən hakim
Azad İmanov - tərkib üzvü
Vahid Sadıqov - tərkib üzvü

Tərəflər 
Cavabdeh: ƏLİYEV HAFİZ RAMİZ
İddiaçı: "OPTİMAL ELEKTRONİKA" MƏHDUD MƏSULİYYƏTLİ CƏMİYYƏTİ

İşin mahiyyəti
Müqavilələrdən əmələ gələn öhdəliklər üzrə mübahisələr

1 Ответ

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

Вам нужно сделать POST с каждым обновленным значением voen в цикле, извлечь идентификаторы и сделать новые запросы.

import requests,re
from bs4 import BeautifulSoup as bs

data = {'VOEN': '', 'button': 'Search'}

voens = ['1303450301', '1700393071', '2002283071']

for voen in voens:
    data['VOEN'] = voen
    r = requests.post('https://e-mehkeme.gov.az/Public/Cases', data=data)
    soup = bs(r.text, 'lxml')
    ids = [i['value'] for i in soup.select('.casedetail')]
    for i in ids:
        r = requests.get(f'https://e-mehkeme.gov.az/Public/CaseDetail?caseId={i}')
        soup = bs(r.content, 'lxml')
        print([re.sub('\n|\r|\n','',i.text.strip()) for i in soup.select('[colspan="4"]')])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...