欢迎光临UUpython
最大、最新、最全的Python代码收集站

苏宁易购网站数据爬取

这段代码使用了 Selenium 库来进行自动化的网页数据抓取。它通过打开 Chrome 浏览器,访问苏宁易购的 iPhone 14 搜索页面,然后模拟滚动窗口、提取数据、保存数据、点击下一页等操作来抓取商品信息。

以下是代码的主要部分解释:

  1. 导入所需的库和模块,包括 webdrivertimeBycsv
  2. 打开一个 CSV 文件,用于存储抓取的数据。在打开文件时,使用了 'a' 模式表示追加写入,以免覆盖之前的数据。
  3. 创建一个 CSV writer 对象,用于写入数据行。
  4. 创建一个 Chrome 浏览器的 WebDriver 对象。
  5. 使用 WebDriver 打开指定的网址。
  6. 使用 execute_script 方法滚动窗口到底部,以加载更多商品信息。
  7. 使用 find_elements 方法根据 CSS 选择器提取商品信息的父级元素。
  8. 对于每个商品父级元素,使用 find_element 方法结合 CSS 选择器提取商品的价格、标题、链接、评价和店铺信息。
  9. 打印提取的商品信息,以便在控制台查看。
  10. 使用 CSV writer 对象将提取的商品信息写入 CSV 文件。
  11. 使用 execute_script 方法点击下一页按钮,加载并抓取下一页的数据。
  12. 最后,使用 input() 函数防止程序退出,以便手动终止程序。

需要注意的是,Selenium 在模拟浏览器操作时较为耗费资源,因此不适合进行大规模的数据抓取。如果需要更稳定和高效的数据抓取,可以考虑使用网络请求库(如 requests)结合页面解析库(如 BeautifulSoup)来进行抓取。此外,网站的页面结构可能会变化,导致选择器无法正常提取数据,需要根据实际情况进行调整。

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
import csv
 
f = open('su//'+'suning5.csv', mode='a', encoding='utf-8', newline='')
writer = csv.writer(f)
writer.writerow(['价格', '标题', '链接', '评价', '店铺'])
# 打开chrome浏览器
driver = webdriver.Chrome()
# 打开网址
driver.get('https://search.suning.com/iphone14/')
driver.implicitly_wait(3)
# 滚动窗口
for page in range(2):
    driver.execute_script('document.querySelector("body > div.ng-footer > div.ng-s-footer").scrollIntoView()')
    time.sleep(2)
    # 提取数据
    divs = driver.find_elements(By.CSS_SELECTOR, '.product-box')
    for div in divs:
        price = div.find_element(By.CSS_SELECTOR, '.price-box').text
        title = div.find_element(By.CSS_SELECTOR, '.title-selling-point').text
        href = div.find_element(By.CSS_SELECTOR, '.title-selling-point a').get_attribute('href')
        evaluate = div.find_element(By.CSS_SELECTOR, '.info-evaluate').text
        store = div.find_element(By.CSS_SELECTOR, '.store-stock').text
 
        print(price, title, href, evaluate, store)
        # 保存数据
        writer.writerow([price, title, href, evaluate, store])
        # 点击下一页
    driver.execute_script('document.querySelector("#nextPage").click()')
input()
赞(0) 打赏
未经允许不得转载:UUpython » 苏宁易购网站数据爬取
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!