json 请求,获取更改网站的内容?(网页抓取)

tv6aics1  于 2023-02-14  发布在  其他
关注(0)|答案(1)|浏览(118)

我在尝试使用requests.get方法从网站抓取信息时遇到问题。我从网站接收的信息不一致,与网站上显示的实际数据不匹配。
作为一个例子,我试着刮位于以下链接的公寓的大小:
https://www.sreality.cz/en/detail/sale/flat/2+kt/havlickuv-brod-havlickuv-brod-stromovka/3574729052。公寓的面积在网站上显示为54平方米,但当我使用requests.get方法时,结果显示为43平方米而不是54平方米。Apartment size on the webpage
Apartment size from the inspect code
Result in vscode
我附上了网站上显示的公寓大小的截图和我的Visual Studio代码中的结果以供参考。我用于此的代码如下:

import requests

test = requests.get("https://www.sreality.cz/api/cs/v2/estates/3574729052?tms=1676140494143").json()

test["items"][8]

我无法找到解决这个问题的办法,并将非常感谢任何帮助或指导。如果有任何错误的格式,我的帖子,请让我知道,我会作出必要的修改。谢谢你提前。

hl0ma9xz

hl0ma9xz1#

以下是获取您所需信息的一种方法:

import requests
import pandas as pd

pd.set_option('display.max_columns', None, 'display.max_colwidth', None)
headers = {
    'accept': 'application/json, text/plain, */*',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}
s = requests.Session()
s.headers.update(headers)
url = 'https://www.sreality.cz/en/detail/sale/flat/2+kt/havlickuv-brod-havlickuv-brod-stromovka/3574729052'
property_id = url.split('/')[-1]
api_url = f'https://www.sreality.cz/api/en/v2/estates/{property_id}'
s.get(url)
df = pd.json_normalize(s.get(api_url).json()['items'])
df = df[['name', 'value']]
print(df)

最终结果:

name    value
0   Total price 3 905 742
1   Update  Yesterday
2   ID  3574729052
3   Building    Brick
4   Property status Under construction
5   Ownership   Personal
6   Property location   Quiet part of municipality
7   Floor   3. floor of total 5 including 1 underground
8   Usable area 54
9   Balcony 4
10  Cellar  2
11  Sales commencement date 25.04.2022
12  Water   [{'name': 'Water', 'value': 'District water supply'}]
13  Electricity [{'name': 'Electricity', 'value': '230 V'}]
14  Transportation  [{'name': 'Transportation', 'value': 'Train'}, {'name': 'Transportation', 'value': 'Road'}, {'name': 'Transportation', 'value': 'Urban public transportation'}, {'name': 'Transportation', 'value': 'Bus'}]
15  Road    [{'name': 'Road', 'value': 'Asphalt'}]
16  Barrier-free access True
17  Furnished   False
18  Elevator    True

相关问题