【问题标题】:Get a JSON data using BeautifulSoup in Python Webscraping在 Python Web Scraping 中使用 BeautifulSoup 获取 JSON 数据
【发布时间】:2021-01-05 07:07:51
【问题描述】:

我正在尝试获取 JSON 对象但出现错误,我正在使用 BeautifulSoup。 我无法删除“window.pageData=”来完美地做到这一点。使用 .replace 方法替换“window.pageData=”也出错,但无法成功。 我的代码:

    link = "https://www.daraz.com.bd/catalog/?q=" + "Pudina"
    r = requests.get(link)
    soup = BeautifulSoup(r.text, 'html.parser')
    all_scripts = soup.find_all('script')
    my_script=all_scripts[3]
    jsData = re.search(r'window.pageData=', my_script.text)
    data = json.loads(jsData.group(1))

这是我的脚本

<script>window.pageData={
 "mods": {
   "listItems": [
     {
       "name": "Mint leaf Powder (পুদিনা পাতা গুড়া) (১০০গ্রাম)- Pudina Pata Gura",
       "nid": "125018674",
       "productUrl": "//www.daraz.com.bd/products/mint-leaf-powder-pudina-pata-gura-i125018674-s1045213986.html?search=1",
       "image": "https://static-01.daraz.com.bd/p/e742aabbea46336304f2081a29de1139.jpg",
       "originalPrice": "180.00",
       "originalPriceShow": "৳ 180",
       "price": "171",
     }
   ]
 }
}</script>

【问题讨论】:

  • 这里根本不需要 BeautifulSoup。试试这个print(json.loads(re.findall(r"window\.pageData=(.*?)&lt;/",r.text)[0]))

标签: python json web-scraping beautifulsoup


【解决方案1】:

我不知道你在.replace() 中尝试过什么,但这对我有用。

import requests
from bs4 import BeautifulSoup
import re
import json
link = "https://www.daraz.com.bd/catalog/?q=" + "Pudina"
r = requests.get(link)
soup = BeautifulSoup(r.text, 'html.parser')
all_scripts = soup.find_all('script')
my_script=all_scripts[3]
my_script = re.sub('window.pageData=', "",my_script.text)
#my_script=my_script.text.replace("window.pageData=","")
#print(my_script)
data = json.loads(my_script)
print(data)

【讨论】:

  • raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 收到此错误。
  • in loads return _default_decoder.decode(s) 还有in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  • 如果你想包括导入,我已经添加了整个代码,似乎对我来说很完美。你能告诉我每个库的版本或你正在使用的 python 版本吗?
  • 我刚刚尝试使用您的代码,但出现此错误,screenshot
  • 编辑了我的代码。你能验证print(my_script) 是否仍然给出window.pageData=
猜你喜欢
  • 2018-04-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
相关资源
最近更新 更多