Python BeautifulSoup web刮片返回无

Python BeautifulSoup web刮片返回无,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正在尝试获取提供网站的img、标题和位置,但BeautifulSoup无法通过类搜索结果体获取div中的元素。当我尝试查找该div中包含类的div时,它将返回none。试试这个 from bs4 import BeautifulSoup import requests url = 'https://www.facilitron.com/searchfacility/u:facilitron/lat:37.8271784/lng:-122.2913078/dist:20/activities:

我正在尝试获取提供网站的img、标题和位置,但BeautifulSoup无法通过类搜索结果体获取div中的元素。当我尝试查找该div中包含类的div时,它将返回none。

试试这个

from bs4 import BeautifulSoup
import requests

url = 'https://www.facilitron.com/searchfacility/u:facilitron/lat:37.8271784/lng:-122.2913078/dist:20/activities:-1/types:-1/namelike:grass%20field'

source = requests.get(url)
soup = BeautifulSoup(source.content, 'lxml')

find = soup.find('div', class_="search-results-body")
print(find)

尝试将您的解析器更改为

find = soup.find('div', {'class': 'clearfix'})

您查找的内容是高度动态的,不存在于页面源代码Ctrl+U中。但是,使用适当的参数发出post http请求,您可以从一些json响应中获取它们。我只分析了每个线索的名称和地址。您可以从回复中找到与每个潜在客户相关的许多其他信息

soup = BeautifulSoup(source.content, 'html.parser')

我做了,同样的结果你把id名而不是类名,我已经更新了答案,现在试试。我测试了它这是错误的内容,我想要的是'clearfix facility row'和BeautifulSoup返回None,所以只需将名称更改为您想要的类,我已经向您展示了syntaxI确实更改为我想要的类,并且它返回None。页面通过javascript加载内容。我如何获得通过javascript加载的内容?您使用Selenium或类似的工具。与“lxml”相同的结果确定吗?对不起,这对我有用:
import requests

url = 'https://www.facilitron.com/api/search/facilities/facilitron'

payload = {
    'search_option[startLoc][]': ['-122.2913078','37.8271784'],
    'search_option[distance]': '20',
    'search_option[activities][]': '-1',
    'search_option[start_row]': '0',
    'search_option[limit]': '15',
    'search_option[types][]': '-1',
    'search_option[namelike]': 'grass field'
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
    'Referer': 'https://www.facilitron.com/searchfacility/u:facilitron/lat:37.8271784/lng:-122.2913078/dist:20/activities:-1/types:-1/namelike:grass%20field'
}

res = requests.post(url,data=payload,headers=headers)
for item in res.json()['facilities']:
    print(item['name'],item['address'])