您当前的位置: 首页 >  爬虫

不会翻墙的泰隆

暂无认证

  • 3浏览

    0关注

    31博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

部分电商平台为防止爬虫竟然这样做?

不会翻墙的泰隆 发布时间:2021-03-16 16:21:00 ,浏览量:3

部分电商平台为防止爬虫竟然这样做?
  • 初步介绍 此次内容涉及到的电商平台:wish,它是一款国外电商网站,主要业务在移动端,类似于国内的拼XX; URL链接:www.wish.com;
  • 爬取内容
  1. 产品信息:产品名称,店铺名称,价格,评论数,评分;
  2. 评论信息;
  • 开始爬虫
  1. 先做一个URL解析 在这里插入图片描述 主页面能看到的信息就只有价格,商品名称,店铺名称,评论数,没有评分; 在这里插入图片描述 评分在另一个二级页面,但是URL链接没变;用xpath定位也不行。好在我通过索引定位到了他的value值也就是评级,发现此处隐藏了一大串商品信息,真是煞费苦心 在这里插入图片描述 问题来了,通过xpath虽说可以定位爬取这一串信息,但怎么截取自己想要的数据;没错,用正则;
def parge_page(url):
    response = requests.get(url=url, headers=headers)
    # print(response) #测试一下看看也没有请求到网页
    text = response.text
    html = etree.HTML(text)
    value = html.xpath('.//script[@type="application/ld+json"]/text()')  #定位匹配所有值
    rating_value = re.findall("\d+\.\d+",value)[0]  # 匹配评级
    print(rating_value)

使用正则,出现如下错误:

在这里插入图片描述 意思是不是字符串对象不能使用正则,那该怎么办呢?首先通过 type来判断此内容的数据类型;

    value = html.xpath('.//script[@type="application/ld+json"]/text()')  #定位匹配所有值
    print(type(value))
然后通过json包转换数据类型;
    str_value = json.dumps(value)
字符串类型转换成功;
    value = html.xpath('.//script[@type="application/ld+json"]/text()')  #定位匹配所有值
    str_value = json.dumps(value)
    rating_value = re.findall("\d+\.\d+",str_value)[0]  # 匹配评级
    print("评级:",rating_value)
这样就能得到评级内容了,如下图;

在这里插入图片描述 其他信息以此类推,使用正则来匹配想要的数据;

关注
打赏
1658128969
查看更多评论
立即登录/注册

微信扫码登录

0.0380s