在Python中提取Javascript变量对象数据和Web抓取
目前,我可以使用requests-then-Soup从发送的post请求中提取Javascript数据。但我只想刮产品plu,sku,描述和品牌。我正在努力寻找一种方法,我可以只打印我需要的数据,而不是整个脚本。这是我使用soup提取脚本后打印的文本。我将从多个post请求中删除多个产品,因此区块的想法并不真正合适在Python中提取Javascript变量对象数据和Web抓取,javascript,python,beautifulsoup,python-requests,Javascript,Python,Beautifulsoup,Python Requests,目前,我可以使用requests-then-Soup从发送的post请求中提取Javascript数据。但我只想刮产品plu,sku,描述和品牌。我正在努力寻找一种方法,我可以只打印我需要的数据,而不是整个脚本。这是我使用soup提取脚本后打印的文本。我将从多个post请求中删除多个产品,因此区块的想法并不真正合适 <script type="text/javascript"> var dataObject = { platform: 'desktop', pageType: 'b
<script type="text/javascript">
var dataObject = {
platform: 'desktop',
pageType: 'basket',
orderID: '',
pageName: 'Basket',
orderTotal: '92.99',
orderCurrency: 'GBP',
currency: 'GBP',
custEmail: '',
custId: '',
items: [
{
plu: '282013',
sku: '653460',
category: 'Footwear',
description: 'Mayfly Lite Pinnacle Women's',
colour: '',
brand: 'Nike',
unitPrice: '90',
quantity: '1',
totalPrice: '90',
sale: 'false'
} ]
};
正如你所见,这是太多的信息 这个怎么样:
将捕获的文本分配给名为chunk的新多行字符串变量
列出你要找的钥匙清单
在每行上循环检查该行是否有您想要的术语,然后打印该术语:
chunk = '''
<script type="text/javascript">
var dataObject = {
.........blah blah.......
plu: '282013',
sku: '653460',
category: 'Footwear',
description: 'Mayfly Lite Pinnacle Women's',
colour: '',
brand: 'Nike',
..... blah .......
};'''
keys = ['plu', 'sku', 'description', 'brand']
for line in chunk.splitlines():
if line.split(':')[0].strip() in keys:
print line.strip()
显然,您可以使用类似的split、strip、replace等应用程序来清理结果。这确实有效,但我将提取多个产品,以便更改名称等。如果这在你的术语中有意义的话,那么名字是我的钥匙列表中的一个钥匙吗?或者每个键的冒号后面的文本?我可以发送完整的脚本给您看看吗?可能会帮助您了解问题所在。谢谢你的帮助!
plu: '282013',
sku: '653460',
description: 'Mayfly Lite Pinnacle Women's',
brand: 'Nike',