我在试着提取文本
来自网站A https://www.vitalsource.com/products/abnormal-psychology-susan-nolen-hoeksema-v9781259765667的60天
来自网站B https://www.vitalsource.com/products/teaming-with-nutrients-jeff-lowenfels-v9781604695175的终生访问
我尝试使用abs xpath,两者都不返回任何内容。
对于A
//div[2]/div[1]/label[1]
对于B
//div[1]/span[1]/label[1]
nor css路径
.u-weight--bold.type--magic9.u-inline
我相信我想要提取的文本不是由javascript生成的。所以我不知道我还能做什么来解决这个问题。
请协助!
提前谢谢你。
发布于 2019-06-03 07:03:41
您需要的信息是由Javascript呈现的,但在页面中也可以使用JSON格式。您需要做的就是选择包含数据的元素,使用JSON lib解析数据并访问所需的字段。
import json
import pprint
data = response.xpath(
'//div[@data-react-class="vs.CurrentRegionOnlyWarningModal"]'
'/@data-react-props')
.extract_first()
json_data = json.loads(data)
pprint.pprint(json_data)
{'selectedVariant': None,
'variants': [{'asset_id': 88677112,
'created_at': '2016-10-07T14:17:10.000Z',
'deleted_at': None,
'distributable': True,
'downloadable_duration': 'perpetual',
'full_base_currency': 'USD',
'full_base_price': '107.5',
'full_currency': 'USD',
'full_price': '107.5',
'full_price_converted': False,
'id': 476831514,
'import_id': 'a3b99a3de0df7d0442253798cba8b8ea',
'in_store': True,
'item_type': 'Single',
....
'online_duration': '60 days',
因此,您可以正常访问它:
for x in json_data['variants']:
print(x['online_duration'])
值得注意的是,这个站点对每个产品都有一些变体,并且有更多的字段具有相同的字符串。您必须了解此站点如何组织产品以获取正确的数据,但这种方法应该足以访问您需要的所有信息。
发布于 2019-06-03 01:46:05
不幸的是,它是由javascript生成的。所以你很可能需要使用像selenium
这样的东西。
https://stackoverflow.com/questions/56417420
复制相似问题