python - 如何抓取返回空表的网站?
问题描述
问题
我正在尝试抓取网站。但是,当我发布邮递员的请求时,我无法访问表格内容。我试过请求库来获取信息。我尝试使用 cloudcraper 库看起来像一个人。结果 HTML 的表格为空。我该如何解决?
截图
代码
import requests
url = "https://www.turkiye.gov.tr/mersin-yenisehir-belediyesi-arsa-rayic-degeri-sorgulama?submit"
payload='btn=Sorgula&caddesokak=&id=&islem=&mahalle=27&token=%7B609B03-5C5357-904654-84788D-227746-F7EEF8-F661BE-1B3F90%7D&yil=2021'
headers = {
'sec-ch-ua': '"Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Upgrade-Insecure-Requests': '1',
'DNT': '1',
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Sec-Fetch-Dest': 'document',
'Cookie': 'TURKIYESESSIONID=9a8ab4rjv7oprv5atidcmlo95i; language=tr_TR.UTF-8; TS01ee3a52=015c1cbb6d657270d7a05c71f0c60353ad5d33d8832ac14f33c8078bc783d34e5862d30b42518895fc09263e263aa5d0c8ac69356e191fa7dfed849b6029e59b84d9634c98180a76df4845df847364cfd3771e1e8c; w3p=4090734784.20480.0000'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
解决方案
您遇到的问题是,邮递员和请求库不适用于 javascript,并且您尝试抓取的网站严重依赖 javascript,我亲自检查了我的浏览器,如果您在该网站中禁用 JS,它会返回一个空白页面,解决方法是selenium库,它有一个学习曲线,但它能够抓取任何这样的网站。
推荐阅读
- javascript - ReactJS:TypeError:无法读取未定义的属性“项目”
- amazon-web-services - 如何通过 CLI 终止 AWS 中的多个 EC2 实例?
- pine-script - 无法使用参数调用“交叉”(系列 [浮点],hline);可用重载:crossover(series[float], series[float]) => series[bool]
- python - 简化熊猫数据框中的多种数据组合
- node.js - 以firebase为后端的计算时间
- c - c sockets sendmsg MSG_DONTWAIT - 缓冲区重用
- macos - 使用 leveldb 构建 erlang 项目时出错
- python-3.x - RRelief 特征选择,使用来自 skrebate 的 multisurf
- python - 为什么 super(SubPerson, SubPerson).name.__set__(self, value) 在描述符中调用 GETTER。(不是二传手)
- python - 网络服务器只向客户端发送一次数据而不是循环