python3[爬虫实战] 使用selenium,xpath爬取京东手机(下)

这次主要是进行京东具体某个店铺手机评论内容的爬取。

本来是跟上一起写的,只是没有时间一块做总结,现在写上来是有点生疏了。这里是暂时获取一个商品的评论内容

爬取的字段内容.png

爬取的字段:评论内容,购买机型,评论人

上代码:

# -*- coding: utf-8 -*-
# @Time    : 2017/9/18 23:16
# @Author  : 蛇崽
# @Email   : 17193337679@163.com
# @File    : TaoBaoZUK1Detail.py zuk z1 详情页内容

import time
from selenium import webdriver
from lxml import etree

chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"
browser = webdriver.Chrome(chromedriver)

# 获取第一页的数据
def gethtml():
    url = "https://detail.tmall.com/item.htm?id=531993957001&skuId=3609796167425&user_id=268451883&cat_id=2&is_b=1&rn=71b9b0aeb233411c4f59fe8c610bc34b"
    browser.get(url)
    time.sleep(5)
    browser.execute_script('window.scrollBy(0,3000)')
    time.sleep(2)
    browser.execute_script('window.scrollBy(0,5000)')
    time.sleep(2)

    # 累计评价
    btnNext = browser.find_element_by_xpath('//*[@id="J_TabBar"]/li[3]/a')
    btnNext.click()
    html = browser.page_source
    return html



def getcomments(html):
    source = etree.HTML(html)
    commens = source.xpath("//*[@id='J_TabBar']/li[3]/a/em/text()")
    print('评论数一:',commens)
    # 将评论转为int类型
    commens = (int(commens[0]) / 20) + 1
    # 获取到总评论
    print('评论数:',int(commens))
    return  int(commens)



# print(html)
def parseHtml(html):
    html = etree.HTML(html)
    commentlist = html.xpath("//*[@class='rate-grid']/table/tbody")
    for comment in commentlist:
        # 评论
        vercomment = comment.xpath(
            "./tr/td[@class='tm-col-master']/div[@class='tm-rate-content']/div[@class='tm-rate-fulltxt']/text()")
        # 机器类型
        verphone = comment.xpath("./tr/td[@class='col-meta']/div[@class='rate-sku']/p[@title]/text()")
        print(vercomment)
        print(verphone)
        # 用户(头尾各一个字,中间用****代替)
        veruser = comment.xpath("./tr/td[@class='col-author']/div[@class='rate-user-info']/text()")
        print(veruser)
    print(len(commentlist))

# parseHtml(html)
# print('*'*20)

def nextbuttonwork(num):

    if num != 0 :
        browser.execute_script('window.scrollBy(0,3000)')
        time.sleep(2)
        # browser.find_element_by_css_selector('#J_Reviews > div > div.rate-page > div > a:nth-child(6)').click()
        try:
            browser.find_element_by_css_selector('#J_Reviews > div > div.rate-page > div > a:last-child').click()
            # browser.find_element_by_xpath('//*[@id="J_Reviews"]/div/div[7]/div/a[3][contains(text(), "下一页")]').click()
        except:
            pass
            # browser.find_element_by_xpath('//*[@id="J_Reviews"]/div/div[7]/div/a[3][contains(text(), "下一页")]').click()
        time.sleep(2)
        browser.execute_script('window.scrollBy(0,3000)')
        time.sleep(2)
        browser.execute_script('window.scrollBy(0,5000)')
        time.sleep(2)
        html = browser.page_source
        parseHtml(html)
        print('nextclick finish  ')


def selenuim_work(html):
    print('selenuim start ... ')
    parseHtml(html)
    nextbuttonwork(1)
    print('selenuim  end....')
    pass


def gettotalpagecomments(comments):
    html = gethtml()
    for i in range(0,comments):
        selenuim_work(html)

data = gethtml()
# 得到评论
commens = getcomments(data)
# 根据评论内容进行遍历
gettotalpagecomments(commens)

这里头还是好的

爬取结果

不足:

这里主要进行了单页的爬取, 下一页的按钮还是没有获取到,不知道为什么获取不到,可能是axaj的原因吧, 另外想说一下大公司确实tm牛, 当然了作为爬虫工程师,这在工作中是不可避免的。还麻烦写京东商品评论的帮忙指导一下小白。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,144评论 25 709
  • 抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化。下面是要抓取的商品信息,一款女士文胸。这个商品共有红色...
    _hahaha阅读 11,414评论 2 7
  • 早上起来刷微博,刷着刷着一条好友动态跳入眼中,内心开始莫名地翻滚,其内容平淡无奇,是一条滞后的蓝光病毒的消息,下面...
    anine阅读 2,635评论 1 1
  • 文/汪子皓 2016年12月,丁淏说要来上海找我。我一大早赶去浦东机场接他,大风把我的头发吹得乱七八糟,身体在门口...
    汪子皓阅读 6,671评论 0 6
  • 高二的时候 ,听说隔壁班转来了一个女孩子 ,叫艾琳 。我听着这个名字跟我小学时认识的一个同学的名字 一样,我就...
    二圆二阅读 7,017评论 15 34

友情链接更多精彩内容