【问题标题】:Python Web Scraping Unterminated StringPython网页抓取未终止的字符串
【发布时间】:2018-05-26 04:07:01
【问题描述】:

我正在尝试在 url(链接)列表上运行 for 循环,以抓取“脚本”中的 html 数据并将其转换为可以提取“htmlOutputFileUrl”的格式。但是,每当我运行代码时,我都会收到错误“JSONDecodeError: Unterminated string started at: line 1 column 2998 (char 2997)”,甚至无法尝试提取该信息。

我无法按照下面显示的方式转换“脚本”还是我的代码格式不正确?

我使用的第一个网址是:'http://www.kaggle.com/kanncaa1/data-sciencetutorial-for-beginners'

import requests
import json
import csv
from bs4 import BeautifulSoup
from lxml import etree

for url in links:

        test = requests.get(url)
        getTest=test.text
        data = BeautifulSoup(getTest, "lxml")
        update = data.find('div',class_='site-layout__main-content').find('script').text.split(";")
        dataLoad = json.loads((update[2][update[2].index('{'):len(update[2])-1]))
        print (dataLoad)

【问题讨论】:

    标签: python json web-scraping beautifulsoup lxml


    【解决方案1】:

    您在; 上进行拆分,但在您尝试提取的 JSON 对象中间有一个,因此这会将对象一分为二。您可以结合元素 2 和 3 来获得所需的结果:

    raw_data = update[2][update[2].index('{')] + update[3][:-1]
    

    请注意,尽管我怀疑您是否能够使其正常工作;根本无法保证您在那里有一个有效的 JSON 对象,尤其要注意 JSON 比 JavaScript 本身更严格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多