Python实战系列-获取单页和多页京东评论

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Python实战系列-获取单页和多页京东评论,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Python实战系列-获取单页和多页京东评论如下:

#!/usr/bin/env python
# coding: utf-8

# # 爬取单页评论

# In[2]:


from selenium import webdriver
import time

from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
url = 'https://item.jd.com/100000177770.html'
browser.get(url)


# In[ ]:


time.sleep(20)  # 需要手动登录下,只有登录后才能查看到评论


# In[3]:


#browser.find_element_by_xpath('//*[@id="detail"]/div[1]/ul/li[5]').click()  # 点击“商品评价”按钮
browser.find_element(by=By.XPATH, value='//*[@id="detail"]/div[1]/ul/li[5]').click()
data = browser.page_source  # 获取此时的网页源代码
data


# In[4]:


import re
p_comment = '<p class="comment-con">(.*?)</p>'
comment = re.findall(p_comment, data)
comment
print(comment)

# In[ ]:


for i in range(len(comment)):
    comment[i] = re.sub('<.*?>', '', comment[i])  
    print(str(i+1) + '.' + comment[i])


# # 爬取多页评论

# In[13]:
time.sleep(10)

#browser.find_element_by_xpath('//*[@id="comment-0"]/div[13]/div/div/a[7]').click()  # 第一页的下一页按钮和之后的不一样
browser.find_element(by=By.XPATH, value='//*[@id="comment-0"]/div[12]/div/div/a[7]').click()

# //*[@id="askAnswer"]/div[2]/div[2]/div[12]/div/a[8]
#第一页://*[@id="comment-0"]/div[12]/div/div/a[7]    //*[@id="comment-0"]/div[12]/div/div/a[7]
#第二页://*[@id="comment-0"]/div[12]/div/div/a[8]
#第三页://*[@id="comment-0"]/div[12]/div/div/a[8]
# In[17]:


for i in range(9):
    #browser.find_element_by_xpath('//*[@id="comment-0"]/div[13]/div/div/a[8]').click()
    browser.find_element(by=By.XPATH, value='//*[@id="comment-0"]/div[12]/div/div/a[8]').click()
    time.sleep(2)


# In[18]:


data_all = data
#browser.find_element_by_xpath('//*[@id="comment-0"]/div[13]/div/div/a[7]').click()  # 第一页的向下一页按钮和之后的不一样
browser.find_element(by=By.XPATH, value='//*[@id="comment-0"]/div[13]/div/div/a[7]').click()
time.sleep(3)
data = browser.page_source
data_all = data_all + data

for i in range(8):
    #browser.find_element_by_xpath('//*[@id="comment-0"]/div[13]/div/div/a[8]').click()
    browser.find_element(by=By.XPATH, value='//*[@id="comment-0"]/div[13]/div/div/a[8]').click()
    time.sleep(2)
    data = browser.page_source
    data_all = data_all + data


# In[19]:


data_all


# In[20]:


import re
p_comment = '<p class="comment-con">(.*?)</p>'
comment = re.findall(p_comment, data_all)
comment


# # 爬取负面评论

# In[21]:


#browser.find_element_by_xpath('//*[@id="comment"]/div[2]/div[2]/div[1]/ul/li[7]/a/em').click()  # 点击差评按钮
browser.find_element(by=By.XPATH, value='//*[@id="comment"]/div[2]/div[2]/div[1]/ul/li[7]/a/em').click()
# In[ ]:


# 剩下的逻辑和之前的代码一摸一样了


# In[ ]:





# In[ ]:





# # 2 京东商品评价信息 - Requests获取法

# In[46]:


import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}

url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100000177770&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
res = requests.get(url, headers=headers).text
# print(res)

p_comment = '"content":"(.*?)"'
comment = re.findall(p_comment, res)
comment

for i in range(len(comment)):
    comment[i] = comment[i].replace(r'\n', '')
    print(str(i+1) + '.' + comment[i])


# # 获取多页信息

# In[48]:


import requests
import re
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}

res_all = ''
for i in range(10):
    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100000177770&score=0&sortType=5&pageSize=10&isShadowSku=0&fold=1&page=' + str(i)
    res = requests.get(url, headers=headers).text
    res_all = res_all + res  # 也可以简写成res_all += res
    
p_comment = '"content":"(.*?)"'
comment = re.findall(p_comment, res_all)

for i in range(len(comment)):
    comment[i] = comment[i].replace(r'\n', '') 
    print(str(i+1) + '.' + comment[i])


# # 爬取负面新闻

# 只需要把url中的score参数由0换成1即可,如果是爬取正面新闻,则是换成3

# In[50]:


#browser.find_element_by_xpath('//*[@id="noticeDetail"]/div/div[1]/div[3]/div[1]/button').click()
browser.find_element(by=By.XPATH, value='//*[@id="noticeDetail"]/div/div[1]/div[3]/div[1]/button').click()

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/164014.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!