Сайт, возвращающий поддельный результат / 404 во время очистки? - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь очистить следующий сайт . Я попытался использовать request.get и проанализировал Beautiful Soup, но он не возвращает тот же результат, что и при просмотре в браузере. Я также напрямую вызывал конечную точку, которую они использовали, но это возвращает ошибку 404. Я пытался использовать заголовки, но это не решило. Как мне это решить?

Вот код, который я использовал:

import requests
import BeautifulSoup

headers = headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 X-Requested-With: XMLHttpRequest'}

URL = 'url'
x = requests.get(url, headers=headers)

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

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

Он использовал ajax для загрузки страницы. Я нашел API. Все URL могут быть:

url = "https://legitquest.com/Search/GetResultBySelectedSearchResult?caseText=AIR+1950+SC+1&type=citation&filter=&sortBy=1&formattedCitation=AIR+1950+SC+1&removeFilter=&filterValueList=&_={}".format(str(time.time()).replace(".","")[:-4])

enter image description here

Но по некоторым причинам он также не может сканировать страницу. (Эта страница использует строгое правило для предотвращения сканирования)

Даже если я использовал правильный URL, он также не мог получить его:

enter image description here


Настоятельно рекомендуем вам использовать selenium. Будет проще.


Я получаю:

import requests
import time

headers = {
    "X-Requested-With": "XMLHttpRequest"
}
url = 'https://legitquest.com/Search/GetResultBySelectedSearchResult?caseText=AIR+1950+SC+1&type=citation&filter=&sortBy=1&formattedCitation=AIR+1950+SC+1&removeFilter=&filterValueList=&_={}'.format(str(time.time()).replace(".","")[:-4])
x = requests.get(url,headers=headers)
print(x.json()["CaseDetails"][0]["LinkText"])

Результат:

Sheth Maneklal Mansukhbhai V. Messrs. Hormusji Jamshedji Ginwallaand Sons

Формат json:

{
    'filterList': '',
    'filterValueList': '',
    'caseText': 'AIR 1950 SC 1',
    'currentpage': 1,
    'CaseCount': 1,
    'openPopup': False,
    'UserId': '',
    'IsSubscribed': False,
    'IsMobileDevice': False,
    'CaseDetails': [{
        'LinkText': 'Sheth Maneklal Mansukhbhai V. Messrs. Hormusji Jamshedji Ginwallaand Sons',
        'PartyName': 'sheth-maneklal-mansukhbhai-vs-messrs.-hormusji-jamshedji-ginwallaand-sons',
        'SearchString': None,
        'CaseId': 21763,
        'EncryptedId': '1EBBB',
        'CourtName': 'Supreme Court Of India',
        'Id': 125883,
        'CourtId': 1,
        'CaseType': None,
        'HeadNotes': None,
        'Judges': "HON'BLE MR. JUSTICE M.C. MAHAJAN<BR />HON'BLE MR. JUSTICE SAIYID FAZAL ALI<BR />HON'BLE MR. JUSTICE B.K. MUKHERJEA",
        'DateOfJudgment': '21-03-1950',
        'Judgment': None,
        'OrderByDateTime': '/Date(-624326400000)/',
        'CaseNo': None,
        'Advocates': None,
        'CitationText': '',
        'CitatedCount': 0,
        'CopyText': None,
        'AlternativeCitation': '(1950) SCR 75 ; AIR 1950 SC 1 ; 1950 SCJ 317 ; (1950) 63 LW 495',
        'Petitioner': None,
        'Responder': None,
        'Citation': None,
        'Question': None,
        'HighlightedText': '',
        'IsFoundText': True,
        'IsOverruledExist': False,
        'IsDistinguishedExist': False,
        'IsOtherStatusExist': True,
        'OtherStatusImgUrl': 'https://www.legitquest.com/Content/themes/treatment/referred.svg',
        'OverruledImgUrl': None,
        'DistinguishedImgUrl': None,
        'BookmarkId': 0,
        'Chart': None,
        'CaseCitedCount': None,
        'SnapShot': None
    }]
}
0 голосов
/ 25 апреля 2020

При выполнении этого:

url = 'https://legitquest.com/Home/GetCaseDetails?searchType=citation&publisher=AIR%201950%20SC%201'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36'}
page_html = requests.get(url,headers=headers)
print("Status Code : ")
print(page_html.status_code)
page_soup = soup(page_html.content,features="lxml")

Я получил этот результат, который вам требуется

enter image description here

...