脚本无法生成结果

时间:2019-01-11 15:52:12

标签: python python-3.x post web-scraping beautifulsoup

我用python编写了一个脚本,以抓取用zipcodedistance填充两个输入框6610910000时填充的结果。当我手动尝试输入时,站点会显示结果,但是当我使用脚本尝试相同时,却什么也没有。该脚本也不会引发任何错误。这里可能是什么问题?

Website link

我尝试过:

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 :(得分:0)

我将url和requests方法更改为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)

答案 1 :(得分:0)

包含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)