from selenium import webdriver
import time
import os
import json
from selenium.webdriver.common.action_chains import ActionChainsdriver=webdriver.Chrome("/usr/local/bin/chromedriver")
#保存cookies到文件jd.cookies
def save_cookies(driver):projrct_path=os.path.dirname(os.getcwd())print("cwd="+os.getcwd())file_path=projrct_path+"/cookies/"if not os.path.exists(file_path):os.mkdir(file_path)#保存cookies到文件中,y以后再访问,读取文件cookies=driver.get_cookies()with open(file_path+"jd.cookies","w") as c:#这里必需使用dump方式写入文件,不然load的时候就会米粒问题 格式会不匹配json.dump(cookies,c)print(cookies)
#保存爬取到的京东的计算机的信息保存到thinkpadinfo.txt
def save_computer_message(diclist):projrct_path=os.path.dirname(os.getcwd())print("cwd="+os.getcwd())file_path=projrct_path+"/getMessage/"if not os.path.exists(file_path):os.mkdir(file_path)#保存cookies到文件中,y以后再访问,读取文件with open(file_path+"thinkpadinfo.txt","w",encoding='utf-8') as c:#这里必需使用dump方式写入文件,不然load的时候就会米粒问题 格式会不匹配json.dump(diclist,c,ensure_ascii=False)print(diclist)#判断是否登录成功
def assert_login():elem=driver.find_element_by_class_name("nickname")print(elem.text)if elem.text=="xuejunmei17":return Trueelse:return False#登录并保存cookies
def login():driver.get("https://www.jd.com")#浏览器全屏driver.maximize_window()#设置固定的浏览器分辨率#driver.set_window_size(1920,1080)driver.find_element_by_class_name("link-login").click()driver.find_element_by_link_text("账户登录").click()driver.find_element_by_id("loginname").send_keys("13474470750")driver.find_element_by_id("nloginpwd").send_keys("xjm@123456")driver.find_element_by_id("loginsubmit").click()save_cookies(driver)
#携带cookies访问网站
def get_url_with_cookie():#首先获取项目路径,进而获得cookies文件的路径project_path=os.path.dirname(os.getcwd())file_path=project_path+"/cookies/"cookies_file=file_path+"jd.cookies"#读取到cookies信息jd_cookies_file=open(cookies_file,"r")jd_cookies_str=jd_cookies_file.readline()#加载cookies信息jd_cookies_dict=json.loads(jd_cookies_str)#这个地方必须先访问一下网站,然后把旧的cookies删除掉,再把我们保存的cookies添加进去driver.get("https://www.jd.com")driver.delete_all_cookies()for cookie in jd_cookies_dict:print(cookie)driver.add_cookie(cookie)time.sleep(1)driver.get("https://www.jd.com")
#获取计算机信息
def get_computer_message():elem = driver.find_element_by_link_text("电脑")# 鼠标悬停ActionChains(driver).move_to_element(elem).perform()time.sleep(3)computer = driver.find_element_by_link_text("笔记本")computer.click()# 第一步 获取浏览器的所有句柄handles = driver.window_handles# 第二步 匹配是否是当前的句柄,如果不是,则切换句柄current_handle = driver.current_window_handlefor handle in handles:if handle != current_handle:driver.switch_to.window(handle)#筛选条件time.sleep(1)driver.find_element_by_xpath("//*[@id=\"brand-11518\"]/a/img")# driver.find_element_by_link_text("ThinkPad").click()driver.find_element_by_partial_link_text("7000以上").click()driver.find_element_by_link_text("评论数").click()time.sleep(1)driver.find_element_by_xpath("//*[@id=\"plist\"]/ul/li[1]/div/div[1]/a/img").click()time.sleep(4)# 第一步 获取浏览器的所有句柄handles = driver.window_handles# 第二步 匹配是否是当前的句柄,如果不是,则切换句柄current_handle = driver.current_window_handlefor handle in handles:if handle != current_handle:driver.switch_to.window(handle)time.sleep(4)#driver.find_element_by_link_text("规格与包装").click()elem=driver.find_element_by_xpath("//*[@id=\"detail\"]/div[1]/ul/li[2]")time.sleep(4)elem.click()elem.textprint(elem.text)diclist={}#数据处理elem=driver.find_elements_by_class_name("Ptable-item")for element in elem:dic = {}for element1 in element.find_elements_by_class_name("clearfix"):dic[element1.find_element_by_tag_name("dt").text]=element1.find_element_by_tag_name("dd").textdiclist[element.find_element_by_tag_name("h3").text]=dicprint(diclist)save_computer_message(diclist)
if __name__=="__main__":#login()get_url_with_cookie()state=assert_login()if state==True:get_computer_message()else:login()

输出如下:

/usr/bin/python3.6 /home/xjm/PycharmProjects/PythonTest/selenium_study/my_cookies.py
{'domain': '.jd.com', 'expiry': 1552877934, 'httpOnly': False, 'name': '__jdb', 'path': '/', 'secure': False, 'value': '122270672.4.1552876114757708010821|1.1552876115'}
{'domain': '.jd.com', 'expiry': 1555468133.636045, 'httpOnly': False, 'name': '_tp', 'path': '/', 'secure': False, 'value': 'a03chQnto5YxA0YgLsy6Fw%3D%3D'}
{'domain': '.jd.com', 'expiry': 1555468133.635755, 'httpOnly': False, 'name': 'pin', 'path': '/', 'secure': False, 'value': 'xuejunmei17'}
{'domain': '.jd.com', 'httpOnly': True, 'name': 'thor', 'path': '/', 'secure': False, 'value': '28EEECF9C068DC55743D7364AB7DFF3ADFBBC33F7778EC55751994D3D1FCF1E43AEB5E89A2F52286CA13B31395E6C61ED1B6B9078D98A6454DB17553F42C42835024C652F4DF13F2046FFC30300F828AF795D80AC902FFF577EA6CC395C34475B2F2D28EAE1AB54A38B550C8B188DE3FC60E513164CA5A6B7A0BB28DCEE37CEFE26F400A5651C6FB4E798D5EEECD3DBB'}
{'domain': '.jd.com', 'expiry': 1555468133.63616, 'httpOnly': True, 'name': '_pst', 'path': '/', 'secure': False, 'value': 'xuejunmei17'}
{'domain': '.jd.com', 'expiry': 1555468133.635822, 'httpOnly': True, 'name': 'unick', 'path': '/', 'secure': False, 'value': 'xuejunmei17'}
{'domain': '.jd.com', 'expiry': 1710556133.635499, 'httpOnly': False, 'name': 'TrackID', 'path': '/', 'secure': False, 'value': '1qhelKSDhfYJ4oue-Xhn67gLmDfzGqnb71DrQ0miNaJy_BXuqDlZZkCPMX9yjw5_JxNg54SOD2IhRNX7FeQEpQOrzolHXX8_Zbx7cHYuXQYY'}
{'domain': '.jd.com', 'expiry': 2416876135, 'httpOnly': False, 'name': 'shshshfpb', 'path': '/', 'secure': False, 'value': 'sXOgOMpATp7GBYBRkhl77vQ%3D%3D'}
{'domain': '.jd.com', 'expiry': 2416876135, 'httpOnly': False, 'name': 'shshshfp', 'path': '/', 'secure': False, 'value': '386c77cce8d92c333f370b61995eee2a'}
{'domain': '.jd.com', 'expiry': 1553740114.979039, 'httpOnly': False, 'name': 'PCSYCityID', 'path': '/', 'secure': False, 'value': '1213'}
{'domain': '.jd.com', 'expiry': 1584412133.635686, 'httpOnly': False, 'name': 'pinId', 'path': '/', 'secure': False, 'value': 'oBC0gFfASPXZ6tNERPhaPw'}
{'domain': '.jd.com', 'expiry': 1553740115, 'httpOnly': False, 'name': 'ipLoc-djd', 'path': '/', 'secure': False, 'value': '15-1213-1215'}
{'domain': '.jd.com', 'httpOnly': False, 'name': 'ceshi3.com', 'path': '/', 'secure': False, 'value': '000'}
{'domain': '.jd.com', 'expiry': 2416876116, 'httpOnly': False, 'name': 'shshshfpa', 'path': '/', 'secure': False, 'value': 'abbef222-2b2d-dd85-965e-adf5f4002d51-1552876116'}
{'domain': '.jd.com', 'expiry': 1554172114, 'httpOnly': False, 'name': '__jdv', 'path': '/', 'secure': False, 'value': '122270672|direct|-|none|-|1552876114759'}
{'domain': '.jd.com', 'expiry': 1568428142.367031, 'httpOnly': False, 'name': '__jdu', 'path': '/', 'secure': False, 'value': '1552876114757708010821'}
{'domain': '.jd.com', 'expiry': 1568428134, 'httpOnly': False, 'name': '__jda', 'path': '/', 'secure': False, 'value': '122270672.1552876114757708010821.1552876115.1552876115.1552876115.1'}
{'domain': '.jd.com', 'expiry': 1553740115, 'httpOnly': False, 'name': 'areaId', 'path': '/', 'secure': False, 'value': '15'}
{'domain': '.jd.com', 'httpOnly': False, 'name': '__jdc', 'path': '/', 'secure': False, 'value': '122270672'}
{'domain': '.jd.com', 'expiry': 1552877935, 'httpOnly': False, 'name': 'shshshsID', 'path': '/', 'secure': False, 'value': '4e184ae7d02a3f0a372732f0be3b1185_2_1552876135823'}
{'domain': 'www.jd.com', 'expiry': 1584412134, 'httpOnly': False, 'name': 'o2Control', 'path': '/', 'secure': False, 'value': 'webp'}
xuejunmei17
规格与包装
{'主体': {'系列': '拯救者', '型号': '拯救者Y7000p', '颜色': '黑色', '平台': 'Intel', '认证型号': ''}, '操作系统': {'操作系统': 'Win 10 家庭中文版'}, '处理器': {'CPU类型': 'Intel 第8代 酷睿', 'CPU型号': 'i7-8750H', 'CPU速度': '2.2GHz', '核心': '六核'}, '内存': {'内存容量': '8GB'}, '硬盘': {'固态硬盘': '512GB SSD'}, '显卡': {'类型': '独立显卡', '显示芯片': 'GTX1060', '显存容量': '独立6GB'}, '光驱': {'光驱类型': '无光驱'}, '显示器': {'屏幕规格': '15.6英寸', '显示比例': '宽屏16:9', '物理分辨率': '1920×1080', '屏幕类型': 'IPS'}, '通信': {'内置蓝牙': '蓝牙4.2', '局域网': '10/100/1000Mbps', '无线局域网': '有'}, '端口': {'USB': '3 x USB 3.1', '音频端口': '耳机、麦克风二合一接口'}, '音效系统': {'扬声器': '内置扬声器', '杜比音效': '支持', '内置麦克风': '有'}, '输入设备': {'键盘': '背光键盘', '触摸板': '有'}, '其它设备': {'网络摄像头': '有', '摄像头像素': '720p'}, '电源': {'电池': '内置锂离子电池', '续航时间': '2-5小时', '电源适配器': '100-240V自适应交流电源适配器'}, '机器规格': {'净重': '2-2.5kg'}, '特性': {'特性描述': '正版Office家庭和学生版'}}
cwd=/home/xjm/PycharmProjects/PythonTest/selenium_study
{'主体': {'系列': '拯救者', '型号': '拯救者Y7000p', '颜色': '黑色', '平台': 'Intel', '认证型号': ''}, '操作系统': {'操作系统': 'Win 10 家庭中文版'}, '处理器': {'CPU类型': 'Intel 第8代 酷睿', 'CPU型号': 'i7-8750H', 'CPU速度': '2.2GHz', '核心': '六核'}, '内存': {'内存容量': '8GB'}, '硬盘': {'固态硬盘': '512GB SSD'}, '显卡': {'类型': '独立显卡', '显示芯片': 'GTX1060', '显存容量': '独立6GB'}, '光驱': {'光驱类型': '无光驱'}, '显示器': {'屏幕规格': '15.6英寸', '显示比例': '宽屏16:9', '物理分辨率': '1920×1080', '屏幕类型': 'IPS'}, '通信': {'内置蓝牙': '蓝牙4.2', '局域网': '10/100/1000Mbps', '无线局域网': '有'}, '端口': {'USB': '3 x USB 3.1', '音频端口': '耳机、麦克风二合一接口'}, '音效系统': {'扬声器': '内置扬声器', '杜比音效': '支持', '内置麦克风': '有'}, '输入设备': {'键盘': '背光键盘', '触摸板': '有'}, '其它设备': {'网络摄像头': '有', '摄像头像素': '720p'}, '电源': {'电池': '内置锂离子电池', '续航时间': '2-5小时', '电源适配器': '100-240V自适应交流电源适配器'}, '机器规格': {'净重': '2-2.5kg'}, '特性': {'特性描述': '正版Office家庭和学生版'}}Process finished with exit code 0

selenium+python爬取京东评论最多的计算机配置信息相关推荐

  1. python爬虫用什么电脑好_【Python】【爬虫】最近想买电脑,用Python爬取京东评论做个参考...

    最近想换电脑,又有点不确定买哪一款.所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图. 一.先来看下三款电脑评价的词云图 1 用Python爬取京东自营ThinkPad T490s的评论 ...

  2. python爬取京东商品数据要先登录_手把手教你用python 爬取京东评论

    本次python实战,主要目标是利用 Python爬取京东商品评论数,如上图所示:爬取"Python之父"推荐的小蓝书,这些信息主要包括用户名.书名.评论等信息. 爬取的网址url ...

  3. Python爬取京东评论(汇编)

    目录 一.爬取京东数据详细链接 (一)爬取京东评论 1.文章一 2.文章二 (二)爬取京东商品信息 1.文章一 二.爬虫过程中遇到的一些问题及解决资料 (一)解决爬虫中Response[200]返回值 ...

  4. 【Python爬虫】最近想买电脑,用Python爬取京东评论做个参考

      最近想换电脑,又有点不确定买哪一款.所以决定爬取京东上电脑评论,做个参考,并把最终结果绘制成词云图.    一.先来看下三款电脑评价的词云图    1 用Python爬取京东自营ThinkPad ...

  5. python爬取京东评论分析_【实战好文】|爬取京东书籍评论并分析

    原标题:[实战好文]|爬取京东书籍评论并分析 这是菜鸟学Python的粉丝第10篇原创投稿 阅读本文大概需要5分钟 本篇作者:小郑同学 上周的赠书活动中,收到了楼主送的<利用Python进行数据 ...

  6. python爬取京东评论怎么翻页_爬取京东网页评论(动态网页)

    1.当网页打开的方式不同时,在开发者选项找到的包含评论的文件地址不同,比如第一种,当我们找到的评论界面是含有下一页选项的时候(如下图).我们在左边文件界面发现包含评论的网页地址名字为''product ...

  7. python爬取京东评论_Python如何爬取京东的评价信息

    Python如何爬取京东的评价信息 模块:requests,BeautifulSoup import re import time import csv import requests from bs ...

  8. python爬取京东评论分析_Python爬取京东商品评论+制作关键字云+情感分析图

    首先我们要了解一下,我们用requests包爬取的都只是写在HTML页面上的数据,但是呢,现在很多网站的数据都是通过js代码生成的,除非你找到它,不然是爬取不到的. 首先我随意打开一个京东的商品的详情 ...

  9. python爬取京东畅销榜(计算机类)图书信息(书名,作者,价格),并保存到excel表格

    爬虫新手小白的第一次"半独立"爬虫,为什么是"半独立"呢?因为基本的代码块是从其他博客借鉴过来的,在此基础上加入了自己的思考和实现. (后面的价格获取感觉自己走 ...

  10. python爬取京东评论分析_Python爬取京东商品评价(动态网页的爬取)

    首先打开京东的任意几个商品页面,并观察URL,可以发现都是https://item.jd.com/+数字+.htm的格式,而且数字也随着商品的改变而改变,基本上可以确定这串数字是商品ID 之后我们找到 ...

最新文章

  1. Linux2.6中的Slab层
  2. 怎么查看python是否安装成功-如何查看python是否安装成功?
  3. js检测数据类型的方法你都掌握了几个?
  4. 匹配printf()说明符的类型
  5. Java 下实现锁无关数据结构--转载
  6. Golang并发模型:合理退出并发协程
  7. vs c语言 多线程demo,一个多线程的Socket通信Demo(C语言实现)
  8. Qt:Qt实现网页自动刷新工具
  9. springmvc 处理器方法返回的是string 重定向到处理器方法
  10. Python求解多元非线性方程组
  11. 文件传输服务器的默认端口,服务器上传文件端口
  12. Emacs 安装与体验
  13. unity脚本中print及Debug.Log
  14. FisherYates费雪耶兹随机置乱算法
  15. CISCO路由器如何删除配置及%%non-valatile configuration memory is not present无法保存配置...
  16. 描述TCP和UDP区别
  17. 基于Kubernetes构建企业容器云
  18. SAP采购订单控制价格是否可以修改增强 LV69AFZZ
  19. 通过WIFI唤醒终端设备
  20. Android - View - ViewPager

热门文章

  1. android re卸载程序,手机自带软件卸载不了?教你2种方法,强制卸载预装应用程序!...
  2. ubuntu server 20.04 配置无线wifi网络并设置固定ip公司连接家里的linux服务器配置
  3. mysql .frm文件丢失_实例中所有frm文件消失的幕后黑手
  4. 一步步学习k8s(二)
  5. SQL查询中in和exists的区别
  6. java计算机毕业设计自考学位系统源程序+mysql+系统+lw文档+远程调试
  7. matlibplot之条形图
  8. Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string
  9. ## Myql的常见命令及语法规范
  10. C语言自然数各自出现的次数,2010年计算机等考二级C语言上机考试练习(1)