首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >scrapy,无法在网站中定位文本阶段

scrapy,无法在网站中定位文本阶段
EN

Stack Overflow用户
提问于 2019-06-03 01:35:51
回答 2查看 56关注 0票数 0

我在试着提取文本

来自网站A https://www.vitalsource.com/products/abnormal-psychology-susan-nolen-hoeksema-v978125976566760天

来自网站B https://www.vitalsource.com/products/teaming-with-nutrients-jeff-lowenfels-v9781604695175终生访问

我尝试使用abs xpath,两者都不返回任何内容。

对于A

代码语言:javascript
复制
//div[2]/div[1]/label[1] 

对于B

代码语言:javascript
复制
//div[1]/span[1]/label[1] 

nor css路径

代码语言:javascript
复制
.u-weight--bold.type--magic9.u-inline

我相信我想要提取的文本不是由javascript生成的。所以我不知道我还能做什么来解决这个问题。

请协助!

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-03 07:03:41

您需要的信息是由Javascript呈现的,但在页面中也可以使用JSON格式。您需要做的就是选择包含数据的元素,使用JSON lib解析数据并访问所需的字段。

代码语言:javascript
复制
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',      

因此,您可以正常访问它:

代码语言:javascript
复制
for x in json_data['variants']:
    print(x['online_duration'])

值得注意的是,这个站点对每个产品都有一些变体,并且有更多的字段具有相同的字符串。您必须了解此站点如何组织产品以获取正确的数据,但这种方法应该足以访问您需要的所有信息。

票数 1
EN

Stack Overflow用户

发布于 2019-06-03 01:46:05

不幸的是,它是由javascript生成的。所以你很可能需要使用像selenium这样的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56417420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档