|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 小肥狼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[8]/div/div[3]/span').text # 定位第一页的总页数文本
- num = int(num[2:]) # 将字符串转为整数,方便下面循环多少次使用
- 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()[0] # 价格
- info = li.xpath('.//div[@class="title-selling-point"]/a/text()')
- info = ''.join(info).split()[0] # 商品详情
- evaluate = li.xpath('.//div[@class ="evaluate-old clearfix"]//text() ')
- if evaluate == ['\n']:
- evaluate = ['暂无', '评价']
- evaluate = ''.join(evaluate).split()[0] # 评价
- shop_name = li.xpath('.//div[@class="store-stock"]/a/text()')[0] # 店名
- 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表格的步骤就没粘贴进来。分享出来给大家学习一下,这些知识点是我最近在学的爬虫的内容。 |
-
-
|