前言
嗨喽,大家好,这里是魔王~
青创网,全国B2B鞋服供应链数智平台,集聚鞋服工厂一手货源,深度库存管控,一键铺货全国各大电商平台及跨境平台,支持一件代发,是电商卖家及主播首选的货源平台。
那么我们今天就来爬一爬它,嘿嘿~
Python 3.8 Pycharm 2021.2
模块使用selenium >>> pip install selenium==3.141.0 (指定版本安装) time csv selenium 模拟人的行为去操作浏览器
正常爬虫 >>> requests Python代码模拟浏览器对于服务器发送请求
selenium >>> 用python代码 >>> 浏览器驱动 >>> 浏览器
selenium 不仅仅可以控制鼠标点击, 还能控制键盘
导入模块from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# 导入csv模块
import csv
# 导入时间模块
import time
+python安装包 安装教程视频,源码\教程 +pycharm 社区版 专业版 及 激活码免费 +看评论区或私我领取
key_word = input('请输入你搜索关键词: ')
f = open(f'{key_word}商品.csv', mode='a', encoding='utf-8', newline='')
# 快速替换小技巧 选择要替换内容 按住ctrl + R 输入 正则表达式匹配规则 替换
csv_writer = csv.DictWriter(f, fieldnames=[
'标题',
'销量',
'价格',
'货号',
'店铺名字',
'店铺年份',
'地址',
'详情页',
])
csv_writer.writeheader() # 写入表头
实例化一个浏览器对象
driver = webdriver.Chrome()
# 不指定路径 1. 你浏览器驱动文件和代码放在一起的 2. 浏览器驱动文件放在python安装目录下面
打开网站
driver.get('https://www.17qcc.com/')
# 定位元素标签, 就可以用 css 或者 xpath
# 通过css选择器查找元素
driver.find_element_by_css_selector('#keywords').send_keys(key_word)
# driver.find_elements_by_css_selector() 取多个标签
driver.find_element_by_css_selector('#keywords').send_keys(Keys.ENTER)
# time.sleep(10) 死等 一定要等够10秒才会继续下面代码
def get_shop_info():
driver.implicitly_wait(10) # 隐式等待10s 等他数据加载完成 什么时候加载完 就继续运行下面的代码
# lis返回的是列表, 元素个数只有70个, 71取不到所以报错
# lis[0] 也报错 >>>> 你解析数据没有提取出来, 返回的 空列表 []
解析数据
取值报错 1. 解析语法 写的有问题 2. 服务器没有给我们返回想要的数据 (反爬了)
lis = driver.find_elements_by_css_selector('#productlist li')
for li in lis:
title = li.find_element_by_css_selector('.rowtitle a ').text # 标题
sell = li.find_element_by_css_selector('.viewpay').text.replace('已售', '') # 销量
price = li.find_element_by_css_selector('.brprice span').text.replace('¥', '') # 价格
shop_num = li.find_element_by_css_selector('.sizep').text.replace('货号:', '') # 货号
shop_name = li.find_element_by_css_selector('.shop a').text # 店铺名字
shop_year = li.find_element_by_css_selector('.age').text # 店铺年份
address = li.find_element_by_css_selector('.radd').get_attribute('title') # 地址
href = li.find_element_by_css_selector('.rowtitle a').get_attribute('href') # 详情页
dit = {
'标题': title,
'销量': sell,
'价格': price,
'货号': shop_num,
'店铺名字': shop_name,
'店铺年份': shop_year,
'地址': address,
'详情页': href,
}
csv_writer.writerow(dit)
print(title, sell, price, shop_num, shop_name, shop_year, address, href)
driver.find_element_by_css_selector('.next').click()
for page in range(1, 11):
print(f'==============================正在爬取第{page}页数据内容==============================')
time.sleep(1)
get_shop_info()
driver.quit()
最后效果
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!