day6

# 今日内容:
# 注意:selenium驱动的浏览器是干净的,没有任何缓存
# 1、
#
#
#
#
# from selenium import webdriver
#
# driver = webdriver.Chrome(r'D:\BaiduNetdisk\BaiduNetdiskDownload\chromedriver.exe')
#
#
# try:
# driver.implicitly_wait(5)
#
# driver.get('https://www.baidu.com/')
#
#
#
# a=driver.find_element_by_xpath('//a')
# print(a.tag_name)
#
# finally:
# driver.close()



#
# from selenium import webdriver
# from selenium.webdriver import ActionChains
# import time
#
# driver = webdriver.Chrome(r'D:\BaiduNetdisk\BaiduNetdiskDownload\chromedriver.exe')
# driver.implicitly_wait(10)
# driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#
# try:
#
# # driver.switch_to_frame('iframeResult')
# # 切换到id为iframeResult的窗口内
# driver.switch_to.frame('iframeResult')
#
# # 源位置
# draggable = driver.find_element_by_id('draggable')
#
# # 目标位置
# droppable = driver.find_element_by_id('droppable')
#
# # 调用ActionChains,必须把驱动对象传进去
# # 得到一个动作链对象,复制给一个变量
# actions = ActionChains(driver)
#
# # 方式一: 机器人
# # 瞬间把源图片位置秒移到目标图片位置
# actions.drag_and_drop(draggable, droppable) # 编写一个行为
# actions.perform() # 执行编写好的行为
#
#
# # 方式二: 模拟人的行为
# # source = draggable.location['x']
# # target = droppable.location['x']
# # print(source, target)
# #
# # distance = target - source
# # print(distance)
#
# # perform:每个动作都要调用perform执行
#
# # 点击并摁住源图片
# # ActionChains(driver).click_and_hold(draggable).perform()
# #
# # s = 0
# # while s < distance:
# # # 执行位移操作
# # ActionChains(driver).move_by_offset(xoffset=2, yoffset=0).perform()
# # s += 2
# #
# # # 释放动作链
# # ActionChains(driver).release().perform()
# #
# # time.sleep(10)
#
#
# finally:
# driver.close()

# '''
# 前进、后退
# '''
# from selenium import webdriver
# import time
#
# driver = webdriver.Chrome()
#
#
# try:
# driver.implicitly_wait(10)
# driver.get('https://www.jd.com/')
# driver.get('https://www.baidu.com/')
# driver.get('https://www.cnblogs.com/')
#
# time.sleep(2)
#
# # 回退操作
# driver.back()
# time.sleep(1)
# # 前进操作
# driver.forward()
# time.sleep(1)
# driver.back()
# time.sleep(10)
#
# finally:
# driver.close()

from selenium import webdriver
from selenium.webdriver import ChromeOptions
import time
r'''
步骤:
1、打开文件的查看,显示隐藏文件
2、找到C:\Users\administortra\AppData\Local\Google\Chrome\User Data
删除Default文件
3、重新打开浏览器,并登陆百度账号
- 此时会创建一个新的Default缓存文件
'''
# 获取options对象,参数对象
# options = ChromeOptions()
#
# # 获取cookies保存路径
# # 'C:\Users\administortra\AppData\Local\Google\Chrome\User Data'
# profile_directory = r'--user-data-dir=C:\Users\administortra\AppData\Local\Google\Chrome\User Data'
#
# # 添加用户信息目录
# options.add_argument(profile_directory)
#
# # 把参数加载到当前驱动中 chrome_options默认参数,用来接收options对象
# driver = webdriver.Chrome(chrome_options=options)
#
# try:
# driver.implicitly_wait(10)
# driver.get('https://www.baidu.com/')
# '''
# BDUSS:*****
# '''
# # 添加用户cookies信息
# # name、value必须小写
# driver.add_cookie({"name": "BDUSS", "value": "用户session字符串"})
#
# # 刷新操作
# driver.refresh()
#
# time.sleep(10)
#
# finally:
# driver.close()


# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys
# import time
#
#
# driver = webdriver.Chrome(r'D:\BaiduNetdisk\BaiduNetdiskDownload\chromedriver.exe')
# try:
# driver.implicitly_wait(10)
# driver.get('https://www.jd.com/')
#
# input_tag=driver.find_element_by_id('key')
# input_tag.send_keys('剃须刀')
# input_tag.send_keys(Keys.ENTER)
# good_list=driver.find_elements_by_class_name('gl-item')
# for good in good_list:
# good_url=good.find_element_by_css_selector(
# '.p-img a').get_attribute('href')
# good_content=f'''
# shangpinlianije:{good_url}
# '''
# print(good_content)
# with open('tixudao.txt','a',encoding='utf-8')as f:
# f.write(good_content)
# time.sleep(10)
# finally:
# driver.close()


from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time


def get_good(driver):
try:

# 通过JS控制滚轮滑动获取所有商品信息
js_code = '''
window.scrollTo(0,5000);
'''
driver.execute_script(js_code) # 执行js代码

# 等待数据加载
time.sleep(2)

# 3、查找所有商品div
# good_div = driver.find_element_by_id('J_goodsList')
good_list = driver.find_elements_by_class_name('gl-item')
n = 1
for good in good_list:
# 根据属性选择器查找
# 商品链接
good_url = good.find_element_by_css_selector(
'.p-img a').get_attribute('href')

# 商品名称
good_name = good.find_element_by_css_selector(
'.p-name em').text.replace("\n", "--")

# 商品价格
good_price = good.find_element_by_class_name(
'p-price').text.replace("\n", ":")

# 评价人数
good_commit = good.find_element_by_class_name(
'p-commit').text.replace("\n", " ")

good_content = f'''
商品链接: {good_url}
商品名称: {good_name}
商品价格: {good_price}
评价人数: {good_commit}
\n
'''
print(good_content)
with open('jd.txt', 'a', encoding='utf-8') as f:
f.write(good_content)

next_tag = driver.find_element_by_class_name('pn-next')
next_tag.click()

time.sleep(2)

# 递归调用函数
get_good(driver)

time.sleep(10)

finally:
driver.close()


if __name__ == '__main__':

good_name = input('请输入爬取商品信息:').strip()

driver = webdriver.Chrome()
driver.implicitly_wait(10)
# 1、往京东主页发送请求
driver.get('https://www.jd.com/')

# 2、输入商品名称,并回车搜索
input_tag = driver.find_element_by_id('key')
input_tag.send_keys(good_name)
input_tag.send_keys(Keys.ENTER)
time.sleep(2)

get_good(driver)

posted on 2019-06-18 22:03  junrob  阅读(120)  评论(0编辑  收藏  举报

导航