0


Python大数据实践:selenium爬取京东评论数据

准备工作

selenium安装

Selenium是广泛使用的模拟浏览器运行的库,用于Web应用程序测试。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代 Web 浏览器。

  1. #终端pip安装
  2. pip install selenium
  3. #清华镜像安装
  4. pip install selenium -i https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/win-64/

安装Chrome driver

查看Google版本,并下载对应版本的驱动

下载路径

安装在anaconda的Scripts文件夹中

测试

  1. from selenium import webdriver
  2. # 初始化WebDriver
  3. browser = webdriver.Chrome()

如果弹出Chrome浏览器,则说明安装成功

爬虫

示例:爬取【AppleiPhone 13】Apple/苹果 iPhone 13 (A2634)128GB 绿色 支持移动联通电信5G 双卡双待手机【行情 报价 价格 评测】-京东

先导入所用的包,这样一步一步跟着做不会出错

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5. from bs4 import BeautifulSoup
  6. import time

初始化并访问

  1. # 初始化WebDriver
  2. browser = webdriver.Chrome()
  3. # 访问商品页面
  4. browser.get('https://item.jd.com/100034710036.html')
  5. # 等待页面加载完成
  6. time.sleep(5)

登录

QQ、微信登录或扫码登陆均可

正常登录后的界面如下

控制点击商品评价按钮

  1. # 点击“商品评价”按钮
  2. try:
  3. # 等待“商品评价”按钮可点击
  4. WebDriverWait(browser, 10).until(
  5. EC.element_to_be_clickable((By.XPATH, '//*[@id="detail"]/div[1]/ul/li[5]'))
  6. ).click()
  7. except Exception as e:
  8. print(f"Error clicking the '商品评价' button: {e}")
  9. browser.quit()
  10. exit()

正则表达式要通过F12检查页面源码去看!!!

爬取评论数据

  1. # 设置要爬取的页数
  2. num_pages_to_scrape = 5
  3. # 循环爬取多页评论
  4. for page_num in range(1, num_pages_to_scrape + 1):
  5. print(f"Scraping page {page_num}...")
  6. # 等待评论加载完成
  7. try:
  8. WebDriverWait(browser, 10).until(
  9. EC.presence_of_element_located((By.CSS_SELECTOR, '.comment-item .comment-con'))
  10. )
  11. except Exception as e:
  12. print(f"Error waiting for comments to load on page {page_num}: {e}")
  13. break
  14. # 获取页面源码
  15. html = browser.page_source
  16. # 使用BeautifulSoup解析HTML
  17. soup = BeautifulSoup(html, 'html.parser')
  18. # 提取评论数据
  19. comments = soup.select('.comment-item .comment-con')
  20. # 检查是否有评论
  21. if comments:
  22. for comment in comments:
  23. # 提取评论内容
  24. content = comment.get_text(separator='\n')
  25. print(content)
  26. else:
  27. print("No comments found on page {page_num}.")

检查是否有下一页(不是必要操作)

因为测试时报错找不到下一页,因此添加检查是否有下一页的操作。如果上述操作没有错误,就可以不加。

  1. # 检查是否还有下一页
  2. if page_num < num_pages_to_scrape:
  3. # 点击“下一页”按钮
  4. try:
  5. # 等待“下一页”按钮可点击
  6. next_page_button = WebDriverWait(browser, 10).until(
  7. EC.element_to_be_clickable((By.CLASS_NAME, 'ui-pager-next'))
  8. )
  9. # 点击下一页按钮
  10. next_page_button.click()
  11. # 等待Ajax请求完成
  12. WebDriverWait(browser, 10).until(
  13. EC.invisibility_of_element_located((By.CLASS_NAME, 'loading-indicator'))
  14. )
  15. except Exception as e:
  16. print(f"Error clicking the '下一页' button or waiting for Ajax request on page {page_num}: {e}")
  17. break

结果

爬取结果如下,每爬一页都会显示是第几页


本文转载自: https://blog.csdn.net/mynameispy/article/details/136818101
版权归原作者 illusionbigdata 所有, 如有侵权,请联系我们删除。

“Python大数据实践:selenium爬取京东评论数据”的评论:

还没有评论