如何将Javascript内容提取到python中?
问题描述:
我试图从该网站上的JavaScript内容:https://js.tokopedia.com/productstats/check?pid=2156146如何将Javascript内容提取到python中?
这是我需要把我的Python代码中一个非常简单的JavaScript的信息,基本上我都有,我已经从JSON转换为项目的字典我来自同一网站的python代码。我想用Javascript做同样的事情并将其转换为python,但到目前为止,我发现的解决方案是让我尝试我熟悉的Selenium,但是Selenium速度很慢。这项任务要求我从不同的uri中提取许多信息。
这里是我的代码片段:
for x in range (0, 3):
with opener.open('https://ace.tokopedia.com/search/v2.6/product?shop_id=2156146&ob=11&rows=80&start='+ str(x*80) +'&full_domain=www.tokopedia.com&scheme=https&device=desktop&source=shop_product') as url:
data = json.loads(url.read().decode())
for produk in data['data']:
k+=1
pid = produk['id']
my_url = opener.open('https://js.tokopedia.com/productstats/check?pid=' + str(pid))
url3 = json.loads(my_url.read().decode())
print(k, produk['id'], produk['name'], produk['price'], url3['item_sold'])
我试图做同样的事情与这当然没有工作,因为它是在JavaScript json.loads。
我忘了我做什么,但我想,当我用我的请求得到这个intstead:<addinfourl at 2309306503576 whose fp = <http.client.HTTPResponse object at 0x00000219AD61AA20>>
帮助将非常感激。
答
内容不是JSON字符串,但包含需要首先提取的JSON字符串。例如,你可以在 “(” 位置分割字符串:
content = """show_product_stats({"item_sold":0, "success":0,"reject":0})"""
frag = content[content.index("(") + 1:-1]
的JSON字符串转换为Python对象:
import json
obj = json.loads(frag)
print(obj)
# -> {'item_sold': 0, 'success': 0, 'reject': 0}