美丽汤 - 解析不返回预期的标签



我正在尝试抓取一个网站以获取房地产销售数据。 但是,解析不会返回我期望的内容。sales_containers的长度简直是0.我知道,通过检查网站,我寻找的班级应该有 30 个div。

法典:

from bs4 import BeautifulSoup
from requests import get
url = 'http://www.boligsiden.dk/salgspris/solgt/ejerlejlighed/1?periode.from=2007-01-01&periode.to=2017-12-31&displaytab=mergedtab&sort=salgsdato&salgstype=%5Bobject%20Object%5D&by=København,%20Frederiksberg'
response = get(url)
print(response.text)
html_soup = BeautifulSoup(response.text, 'html.parser')
type(html_soup)
html_soup.prettify()
sales_containers = html_soup.find_all('div', class_ = 'card card-item card-item--property-sale')
print(type(sales_containers))
print(len(sales_containers))

我在其他网站上使用了几乎相同的代码,在那里它工作得很好。 可能是解析器吗?我尝试了lxml,结果相同。

希望你能帮到你!

页面使用 JavaScript 呈现。JavaScript 向另一个 URL 发出请求,响应是 JSON。你可以像这样获取 JSON:

from requests import get
url ="http://www.boligsiden.dk/salespriceresult/getdata?salgspristype=solgt&periode.from=2007-01-01&periode.to=2017-12-31&displaytab=mergedtab&sort=salgsdato&salgstype=%5Bobject%20Object%5D&by=K%C3%B8benhavn%2C%20Frederiksberg&boligtype=ejerlejlighed&side=1"
response = get(url)
print(response.json())

您可以像筛选任何 JSON 一样过滤结果:

print(response.json()['searchResult']['result']['propertySales'])

或者,您可以使用JavaScript渲染页面,请参阅我对Scraping Google Finance (BeautifulSoup(的回答以了解详细信息。

最新更新