python-3.x 无法从包含非常规内容的网页中获取某些字段

4ngedf3f  于 2022-11-19  发布在  Python
关注(0)|答案(3)|浏览(142)

bounty将在6天后过期。回答此问题可获得+150声望奖励。robots.txt希望吸引更多人关注此问题。

当我尝试使用请求从网页中抓取一些字段时,我遇到了如下这样的外来内容,我没有找到任何从其中抓取数据的想法。下面是我得到的响应的一小部分:

I: Qc[
    j~O~_
]S6gMWNougj~Ougp_{
    hr[
        ogL>i
    ]OqNotnYr=nQHOGirKugLKngL[
        Kh
    ][
        uiMpnTnNpSYR: QIZSXNxNpOq_MRnTnN5Nn|nV[
            _SNotnOIh~Rn|9 RIFnQHOuh6Smg\[
                S^\qxf\: sY8OKjL[
                    yhMVnTnO__
                ]RnQHOYhZ_5NotnRn|
            }TYFnQHOIf
        ]W: NotnVZSZY59nQHOuh5
    }uh8Wq_J_{
        hqSmgLZnTnOTg~NxNpOmiLmNotnRnNxNp>8 gr[
            ~NotnW5>
        ]XZ: MQJ6OV5mGWZ|lXnNxNrqz[
            LK9WL[
                xf\:
            }i\[

我想知道是否有任何方法可以将内容转换为常规的html或json。
下面是应该包含在这些元素中的一些地址:

Franklin St
Great Rd
Nonset Path
bkhjykvo

bkhjykvo1#

数据似乎遵循某种形式的编码。这一点的证据,基于您的comment

  • 某些文本(如>QMxnf\:Lg8Oq^7}{h8[~_XN;Np:{Nn|nV]_mf\}m^r})出现32次
  • 数据(大部分)仅限于ASCII字符,这表明它使用了一种编码膨胀形式,如Base64、Base 85等。
  • 通过流行的解码器运行数据失败,这表明它可能是加密的,但automatic cypher detection是不确定的。
  • 如果数据既经过加密又经过编码,则需要反复试验(能够发现常见的可识别编码模式
  • 数据可以被加密,
  • 数据可以使用专有的模糊处理

查看PropertyRadar,它似乎是they use an integration service by "Zapier",但有关数据格式/交换的公共信息并不容易获得。
最后,看看他们的products page,我可以看到一些层次的信息只有在更高的月订阅计划下才能访问。如果是这样的话,你发布的数据可能被故意混淆,以防止你试图做的事情发生。
无论如何,解析这些数据的最好方法是首先联系网站的技术支持人员,询问他们如何操作。(和共享)一些关于他们的v1 API的技术文档将是一个很好的开始,但是这样做(共享),因为这可能会带来禁止公开发布的限制。如果此数据可以通过更高的层访问,您可能已经违反了与他们的协议,因为您试图对他们的服务进行反向工程。

r3i60tvu

r3i60tvu2#

正如其他人已经提到的,您需要弄清楚哪个javascript库正在解析它,并对其进行反向工程。
它的可能性,作者已经执行了自定义模糊正是为了避免爬行演习,你似乎已经采取了!

9fkzdhlc

9fkzdhlc3#

由于此API需要一个帐户,我无法获得 * 实际信息 *(我尝试创建一个帐户,但它不会接受我的电话号码)。但我可以建议如下:

import requests

url = "" # Enter your url here
data = requests.get(url=url).json()

print(data)

如果您使urlyour suggested url,它将返回解码的错误消息,并且data将是该json响应的字典
编辑:
也许给予这个?

from selenium import webdriver
# from selenium.webdriver.common.keys import Keys

URL = "https://national.propertyradar.com/api/v1/lists/556822/items?&Fields=PType,Address,City,SqFt,Beds,Baths,AVM,AvailableEquity,Owner,isSameMailingOrExempt,isListedForSale,inForeclosure,inTaxDelinquency,RadarID&ClientID=H-20220208&SessionID=7c524e5ba8def8e48757098984ebd67202a9ab76&Start=100&Limit=100"

# Must have chromedriver installed, or use driver = webdriver.Firefox()
driver = webdriver.Chrome()
driver.get(url=URL)
elem = driver.find_element("Franklin St")
driver.close()

相关问题