我正在试图搜索一个有关房地产销售数据的网站。
但是,解析不会返回我期望的内容。 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,结果相同。
希望你能帮忙!
答案 0 :(得分:1)
该页面使用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)的回答了解详情。