TA的每日心情 | 擦汗 9 小时前 |
---|
签到天数: 1048 天 连续签到: 1 天 [LV.10]测试总司令
|
实例化一个浏览器对象
- driver = webdriver.Chrome()
- driver.get('https://www.jd.com')
复制代码 定义搜索的关键字
打开浏览器会发现URL的格式。
搜索功能
def get_product(key):
# 定位到搜索框
driver.find_element_by_css_selector('#key').send_keys(keyword)
# 定位到搜索按钮
driver.find_element_by_css_selector('.button').click()
# 防止超时,等待加载,设置为10S
driver.implicitly_wait(10)
# 最大化浏览器效果
解决图片懒加载
# 解决懒加载
def drop_down():
for x in range(1,11,2):
time.sleep(0.5)
# 控制翻页
j = x / 10
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
解析商品数据
通过定位发现,商品都有gl-item属性。
拿到商品集合
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
解析商品名称
通过定位发现,商品名称在p-name下的em标签中。
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
for li in lis:
try:
# 商品名称
product_name = li.find_element_by_css_selector('div.p-name a em').text
解析商品价格
通过定位发现,商品价格在p-price下的i标签中。
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
for li in lis:
try:
# 商品名称
product_name = li.find_element_by_css_selector('div.p-name a em').text
# 商品价格
product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
解析商品评价数量
通过定位发现,商品价格在p-commit下的a标签中。
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
for li in lis:
try:
# 商品名称
product_name = li.find_element_by_css_selector('div.p-name a em').text
# 商品价格
product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
# 商品评价数量
product_comment = li.find_element_by_css_selector('div.p-commit strong a').text
解析店铺名称
通过定位发现,商品价格在span下的a标签中。
# 解析商品数据
def parse_product():
# 拿到商品集合
lis = driver.find_elements_by_css_selector('.gl-item')
for li in lis:
try:
# 商品名称
product_name = li.find_element_by_css_selector('div.p-name a em').text
# 商品价格
product_price = li.find_element_by_css_selector('div.p-price strong i').text + '元'
# 商品评价
product_comment = li.find_element_by_css_selector('div.p-commit strong a').text
# 店铺名称
product_shop_name = li.find_element_by_css_selector('span.J_im_icon a').text
#打印数据
print(product_shop_name,product_price,product_comment,product_shop_name)
解析数据保存到csv文件
with open('data_jd.csv',mode='a',encoding='utf-8',newline='') as f:
csv_write = csv.writer(f)
csv_write.writerow([product_name,product_price,product_name,product_shop_name])
except Exception as e:
print(e)
总结
到最后,本期教程完成了爬取京东月饼销售数据的操作,并保存到csv文件,搜索不仅限于月饼,也可用于其他商品。
|
|