小肥狼haoran 发表于 2024-6-27 15:28:47

python自动化驱动 爬虫 爬取 某电商网站 某风扇 商品数据

本帖最后由 小肥狼haoran 于 2024-6-28 11:55 编辑

from selenium import webdriver# 导入自动化测试模块
from lxml import etree# 导入etree模块对HTML内容进行解析
import time# 导入时间模块,强制等待用

browser = webdriver.Chrome()# 谷歌游览器自动化驱动 实例化

def main():
    browser.get('https://www.suning.com/')# 实例化需要进入的网站
    browser.maximize_window()# 游览器最大化,不然无法拿取第一页的总页数
    browser.find_element_by_id('searchKeywords').send_keys('格力风扇')# 定位搜索框,输入搜索关键词
    browser.find_element_by_id('searchSubmit').click()# 点击首页搜索按钮
    num = browser.find_element_by_xpath('/html/body/div/div/div/span').text# 定位第一页的总页数文本
    num = int(num)# 将字符串转为整数,方便下面循环多少次使用
    for page in range(num):
      scroll()# 调用滚屏函数
      time.sleep(0.5)
      html = browser.page_source# 网页源码
      tree = etree.HTML(html)# 源码给到etree解析
      li_list = tree.xpath('//div[@id="product-list"]/ul/li')# xpath规则获取列表
      for li in li_list:# 循环取每条数据
            price = li.xpath(
                './/div[@class="price-box"]/span[@class="def-price"]//text()')# 价格
            if price == ['\n']:
                price = ['暂无', '价格']
            price = ''.join(price).split()# 价格
            info = li.xpath('.//div[@class="title-selling-point"]/a/text()')
            info = ''.join(info).split()# 商品详情
            evaluate = li.xpath('.//div[@class ="evaluate-old clearfix"]//text() ')
            if evaluate == ['\n']:
                evaluate = ['暂无', '评价']
            evaluate = ''.join(evaluate).split()# 评价
            shop_name = li.xpath('.//div[@class="store-stock"]/a/text()')# 店名
            label = li.xpath('.//div[@class="sales-label"]//text()')
            if label == []:
                label = ['暂无标签']
            label = ','.join(label)# 商品标签
            print(price, info, evaluate, shop_name, label)
      try:# 异常处理,尝试执行以下代码
            print(f'{page + 1}页数据采集完成')# 告知多少页的数据采集完成
            browser.find_element_by_id('nextPage').click()# 查询元素id为nextPage好持续翻下一页
      except Exception as e:# 所有异常处理
            print(f'{page + 1}页是最后一页采集完成')# 因没有下一页点击了,所以数据爬到最后一页,提示爬完了。


def scroll():# 滚动屏幕函数
    for page in range(0, 14000, 1000):# 每次向下滚动1000px,累计滚动14000px
      time.sleep(0.2)# 代码休眠,强制等待0.2秒
      browser.execute_script(f'window.scroll(0,{page})')# 从0开始,每次累加1000的数值
      time.sleep(0.4)# 代码休眠1是网速加载网页内容,2是让测试驱动模仿真人的样子等待。
main()# 调用函数
browser.quit()# 关闭游览器
以上代码可以让自动化驱动打开一个谷歌游览器,假装人进行数据爬取。经过今天一天的仔细研究学习,圆满完成。后面还有一段保存在exc表格的步骤就没粘贴进来。分享出来给大家学习一下,这些知识点是我最近在学的爬虫的内容。

lscp 发表于 2024-6-28 09:06:41

收藏个,先

sunshine_8205 发表于 2024-6-28 11:33:32

{:5_106:}

小肥狼haoran 发表于 2024-6-28 11:56:00

lscp 发表于 2024-6-28 09:06
收藏个,先

最后补上了两行代码。调用函数main和关闭游览器,代码结束

小肥狼haoran 发表于 2024-6-28 11:56:20

sunshine_8205 发表于 2024-6-28 11:33


共勉,一起学习!
页: [1]
查看完整版本: python自动化驱动 爬虫 爬取 某电商网站 某风扇 商品数据