Скрипт не дает результатов - PullRequest
0 голосов
/ 11 января 2019

Я написал скрипт на python для очистки результатов, заполняемых при заполнении двух полей ввода zipcode и distance с помощью 66109, 10000. Когда я пытаюсь ввести данные вручную, сайт отображает результаты, но когда я пытаюсь сделать то же самое с помощью скрипта, я ничего не получаю. Скрипт тоже не выдает ошибки. Какие могут быть проблемы здесь?

Ссылка на сайт

Я пробовал с:

import requests
from bs4 import BeautifulSoup

url = 'https://www.sart.org/clinic-pages/find-a-clinic/'

payload = {
    'zip': '66109',
    'strdistance': '10000',
    'SelectedState': 'Select State or Region'
}

def get_clinics(link):
    session = requests.Session()   
    response = session.post(link,data=payload,headers={"User-Agent":"Mozilla/5.0"})
    soup = BeautifulSoup(response.text,"lxml")
    item = soup.select_one(".clinics__search-meta").text
    print(item)

if __name__ == '__main__':
    get_clinics(url)

Я только после этой строки В 10000 милях от 66109 есть 383 клиники. генерируется при выполнении поиска.

see_screnshot

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Включение файлов cookie является одной из основных проблем здесь. Если вы делаете это правильно, вы можете получить действительный ответ, как вы начали. Вот рабочий код:

import requests
from bs4 import BeautifulSoup

url = 'https://www.sart.org/clinic-pages/find-a-clinic/'

payload = {
    'zip': '66109',
    'strdistance': '10000',
    'SelectedState': 'Select State or Region'
}

def get_clinics(link):
    with requests.Session() as s:
        res = s.get(link)
        req = s.post(link,data=payload,cookies=res.cookies.get_dict())   
        soup = BeautifulSoup(req.text,"lxml")
        item = soup.select_one(".clinics__search-meta").get_text(strip=True)
        print(item)

if __name__ == '__main__':
    get_clinics(url)
0 голосов
/ 11 января 2019

Я изменил URL и метод запросов на GET и работал для меня

 def get_clinics(link):
    session = requests.Session()   
    response = session.get(link, headers={"User-Agent":"Mozilla/5.0"})
    soup = BeautifulSoup(response.text,"lxml")
    item = soup.select_one(".clinics__search-meta").text
    print(item)

url = 'https://www.sart.org/clinic-pages/find-a-clinic?zip=66109&strdistance=10000&SelectedState=Select+State+or+Region'
get_clinics(url)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...