Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从javascript提取数据_Javascript_Python_Json_Extract - Fatal编程技术网

使用Python从javascript提取数据

使用Python从javascript提取数据,javascript,python,json,extract,Javascript,Python,Json,Extract,我是Python的新用户,我从我的前任那里继承了一个Python笔记本,我想改进它。它的目的是从网站上获取产品的详细信息 工作原理: 它使用beautiful soup从网站上抓取脚本: source = urllib2.urlopen('http://www.testwebsite.html').read() soup = bs4.BeautifulSoup(source) job_postings = soup.findAll("script") job_postings = [jp fo

我是Python的新用户,我从我的前任那里继承了一个Python笔记本,我想改进它。它的目的是从网站上获取产品的详细信息

工作原理:

  • 它使用beautiful soup从网站上抓取脚本:

    source = urllib2.urlopen('http://www.testwebsite.html').read()
    soup = bs4.BeautifulSoup(source)
    job_postings = soup.findAll("script")
    job_postings = [jp for jp in job_postings if not jp.get('type') is None 
                    and ''.join(jp.get('type')) =="text/javascript"
                    and ''.join(jp.get('type')) =="text/javascript"]
    
它返回网页中的所有脚本: (数据的第一部分)

window.wf=window.wf |{};wf.appData=wf.appData | |{};wf.appData.product_data_TEST123=wf.appData.product_data_TEST123|124;{};wf.appData.product_data_TEST123={“sku”:“TES123”,“is_网格视图”:false,“默认显示”:0,“制造商名称”:“供应商1”,“产品名称”:“产品测试”,“零件号”:“1234”,“标价”:1000,“is_价格隐藏”:false,“基价”:1000,“有选项”:true,“选项详细信息”:[{“选项ID”:[],“正常价格”:2681.25],“有免费送货”:false,“总数量”:1,“显示设置数量”:1,“是标准布局”:true,“页面类型”:“ProductPage”};Y_config.app.product_data_TEST123={“sku”:“TEST123”…..此处的信息相同..}; 2 sd部分数据:

\n wf.extend({“YUI_config”:{“app”:{“pageAlias”:“ProductPage”}},“wf”:{“appData”:{“pageAlias”:“ProductPage”,“mkcName”:“AU:FurnitureRoom”,“productReviews”:{“b_show_review_tags”:false,“kit_subgroup_price”:null,“catalog_currency”:“AUD”,“price_model”:null,“colors:”,“available@A@A A@A A@A A@“澳大利亚\\/Sydney”},“库存信息”:{“sku”:“TEST123”,“最新库存更新”:“2016-07-29 00:45:06”,“选项id”:[],“可用数量”:17,“显示数量”:17,,“可用数量字符串”:“库存超过10个”,“短提前期id”:2,“短提前期字符串”:“在1到3个工作日内出库”}; 然后我提取我需要的数据:

   jsonfile =  re.findall(r'wf.appData.product_data_[A-Z]{4}[0-9]{4} = (\{.*});YUI_config.app.product_data_',str(job_postings))
我有这个:

{“sku”:“TEST123”,“is_grid_view”:false,“default_img_display”:0,“manufacturer_name”:“Supplier1”,“product_name”:“product test”,“part_number”:“1234”,“list_price”:1000,“is_price_hidden”:false,“base_price”:1000,“has_opt”:true,“opt_details”:[{“option_id”:“,“regular_price”:2681.25],“has_free_shipping_shipping”:false,“total_数量”:1,“display_set_数量”:1,“is_standard_layout”:true,“页面类型”:“ProductPage”}

我现在的问题是:我想将“库存信息”列表添加到我的数据中

我试过:

     jsonfile =  re.findall(r'inventory_info' = (\{.*}),str(job_postings))

这两个都不管用

我知道Python的知识非常有限,所以我现在有点迷路了。
谢谢你的帮助。

你可能已经找到了问题的答案,但不管怎样,答案就在这里

要获取
库存信息
,您始终可以进行拆分(假设作业过账已转换为
字符串类型
),如下所示:


欢迎来到StackOverflow!很高兴看到新用户提出正确的问题!
    Jsonfile = re.compile('inventory_info' = ({.*?});', re.DOTALL)
inventory_info = job_postings.split("inventory_info:")[1].split("}")[0] + "}"

job_postings += inventory_info