范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

PythonSelenium爬虫实战应用

  本节讲解 Python Selenium 爬虫实战案例,通过对实战案例的讲解让您进一步认识 Selenium 框架。
  实战案例目标:抓取京东商城(https://www.jd.com/)商品名称、商品价格、评论数量,以及商铺名称。比如输入搜索"Python书籍",则抓取如下数据:{"name": "Python编程 从入门到实践 第2版 人民邮电出版社", "price": "¥52.50", "count": "200+条评价", "shop": "智囊图书专营店"} {"name": "Python编程 从入门到实践 第2版(图灵出品)", "price": "¥62.10", "count": "20万+条评价", "shop": "人民邮电出版社"} ...123复制代码类型:[python]
  Selenium 框架的学习重点在于定位元素节点,关于如何定位,我们已经介绍了 8 种方法,其中 Xpath 表达式适用性强,并且便捷。因此,建议大家多多熟悉 Xpath 表达式的相关语法规则。本节案例中很大一部分采用了 Xpath 表达式定位元素,希望帮助您温故知新。
  本节案例中涉及了几个技术难点:第一,如何下拉滚动条下载商品,第二,如何实现翻页,也就是抓取下一页的内容,第三,如何判断数据已经抓取完毕,即终止页。下面我们逐步讲解。  实现自动搜索
  实现自动输出、自动搜索是最基础的一步。首先定位输入框的的节点,其次定位搜索按钮节点,这与实现百度自动搜索思路一致,最关键就是要正确定位元素节点。
  通过开发者调试工具检查相应的的位置,可得如下 Xpath 表达式:输入框表达式://*[@id="key"] 搜索按钮表达式://*[@class="form"]/button12复制代码类型:[python]
  代码如下所示:from selenium import webdriver broswer=webdriver.Chrome() broswer.get("https://www.jd.com/") broswer.find_element_by_xpath("//*[@id="key"]").send_keys("python书籍") broswer.find_element_by_xpath("//*[@class="form"]/button").click()12345复制代码类型:[python]  滚动滑动条
  实现了自动搜索后,接下来就是要抓取页面中的商品信息,而您会发现只有将滑动条滚动至底部,商品才会全部加载完毕。滚动滑轮操作的代码如下:# scrollTo(xpos,ypos) # execute_script()执行js语句,拉动进度条件 #scrollHeight属性,表示可滚动内容的高度 self.browser.execute_script(       "window.scrollTo(0,document.body.scrollHeight)"#拉动进度条至底部 )123456复制代码类型:[python]
  之后在通过 Xpath 表达式匹配所有商品,并将它们放入一个大列表中,通过循环列表取出每个商品,最后提取出想要的信息。li_list=self.browser.find_elements_by_xpath("//*[@id="J_goodsList"]/ul/li") for li in li_list: item={}  # 提取商品名 item["name"]=li.find_element_by_xpath(".//p[@class="p-name"]/a/em").text.strip() # 提取价格 item["price"]=li.find_element_by_xpath(".//p[@class="p-price"]").text.strip() # 提取评论数量 item["count"]=li.find_element_by_xpath(".//p[@class="p-commit"]/strong").text.strip() # 提取商家店铺 item["shop"]=li.find_element_by_xpath(".//p[@class="p-shopnum"]").text.strip()1234567891011复制代码类型:[python]  实现翻页抓取
  如何实现翻页抓取数据,并判断数据数据已经抓取完毕呢?这其实并不难想到,我们可以先跳至终止页(即最后一页)。此时最后一页的"下一页"处于不可用状态,其元素节点如下:终止页下一页class属性:下一页 >  其他页下一页class属性:下一页 > 12复制代码类型:[python]
  如果页面源码中有上述代码存在,则证明此页是最后一页,若没有则不是。因此通过 if ...else 语句即可实现上述需求,如下所示:#-1说明没找到,不是最后一页,执行点击 "下一页" 操作 if self.browser.page_source.find("pn-next disabled")==-1:     browser.find_element_by_class_name("pn-next").click()123复制代码类型:[python]  完整程序代码
  完整程序代码如下所示:#coding:utf8 from selenium import webdriver import time import pymongo class JdSpider(object):     def __init__(self):         self.url="http://www.jd.com/"         self.options=webdriver.ChromeOptions() # 无头模式         self.options.add_argument("--headless")         self.browser=webdriver.Chrome(options=self.options) # 创建无界面参数的浏览器对象         self.i=0  #计数,一共有多少件商品         #输入地址+输入商品+点击按钮,切记这里元素节点是京东首页的输入栏、搜索按钮     def get_html(self):         self.browser.get(self.url)         self.browser.find_element_by_xpath("//*[@id="key"]").send_keys("python书籍")         self.browser.find_element_by_xpath("//*[@class="form"]/button").click()         #把进度条件拉倒最底部+提取商品信息     def get_data(self):         # 执行js语句,拉动进度条件         self.browser.execute_script(             "window.scrollTo(0,document.body.scrollHeight)"         )         # 给页面元素加载时预留时间         time.sleep(2)         #用 xpath 提取每页中所有商品,最终形成一个大列表         li_list=self.browser.find_elements_by_xpath("//*[@id="J_goodsList"]/ul/li")         for li in li_list:             #构建空字典             item={}               item["name"]=li.find_element_by_xpath(".//p[@class="p-name"]/a/em").text.strip()             item["price"]=li.find_element_by_xpath(".//p[@class="p-price"]").text.strip()             item["count"]=li.find_element_by_xpath(".//p[@class="p-commit"]/strong").text.strip()             item["shop"]=li.find_element_by_xpath(".//p[@class="p-shopnum"]").text.strip()             print(item)              self.i+=1     def run(self):         #搜索出想要抓取商品的页面         self.get_html()         #循环执行点击"下一页"操作         while True:             #获取每一页要抓取的数据             self.get_data()             #判断是否是最一页             if self.browser.page_source.find("pn-next disabled")==-1:                 self.browser.find_element_by_class_name("pn-next").click()                 #预留元素加载时间                 time.sleep(1)             else:                 print("数量",self.i)                 break if __name__ == "__main__":     spider=JdSpider()     spider.run()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253复制代码类型:[python]
  输出结果如下:{"name": "Python编程 从入门到实践 第2版(图灵出品) 人民邮电出版社", "price": "¥52.50", "count": "200+条评价", "shop": "智囊图书专营店"} {"name": "Python编程 从入门到实践 第2版(图灵出品)", "price": "¥62.10", "count": "20万+条评价", "shop": "人民邮电出版社"} {"name": "Python编程三剑客:Python编程从入门到实践第2版+快速上手第2版+极客编程(套装共3册)", "price": "¥206.90", "count": "5万+条评价", "shop": "人民邮电出版社"} {"name": "Python数据分析从入门到实践(excel高效办公)(3全彩版)", "price": "¥46.10", "count": "10万+条评价", "shop": "明日科技京东自营旗舰店"} {"name": "零基础学Python(编程入门 项目实践 同步视频)(3全彩版)", "price": "¥37.50", "count": "10万+条评价", "shop": "明日科技京东自营旗舰店"} {"name": "Python编程快速上手 让繁琐工作自动化 第2版", "price": "¥44.50", "count": "10万+条评价", "shop": "人民邮电出版社"} {"name": "现货包邮Python学习手册(原书第5版)上下册2本/计算机编程设计|8053406", "price": "¥142.30", "count": "100+条评价", "shop": "互动创新图书专营店"} {"name": "零基础入门学习Python(第2版)", "price": "¥70.30", "count": "1万+条评价", "shop": "清华大学出版社"} {"name": "超简单:用Python让Excel飞起来", "price": "¥34.90", "count": "2万+条评价", "shop": "机械工业出版社自营官方旗舰店"} {"name": "流畅的Python(图灵出品)", "price": "¥109.80", "count": "2万+条评价", "shop": "人民邮电出版社"} {"name": "Python编程从入门到实践第二版 python编程从入门到实战零基础自学教程计算机基础语言数据分析", "price": "¥49.80", "count": "5000+条评价", "shop": "墨马图书旗舰店"} {"name": "Python深度学习:基于PyTorch", "price": "¥73.40", "count": "5万+条评价", "shop": "机械工业出版社自营官方旗舰店"} {"name": "Python自然语言处理实战:核心技术与算法 自然语言处理教程", "price": "¥48.30", "count": "37条评价", "shop": "芝麻开门图书专营店"} {"name": "Effective Python:编写高质量Python代码的90个有效方法(原书第2版)", "price": "¥110.60 ¥105.10", "count": "2万+条评价", "shop": "机械工业出版社自营官方旗舰店"} ...123456789101112131415复制代码类型:[python]
  Selenium 自动化爬虫让你无须关心网站的类型(静态或者动态),只需您按部就班的寻找元素节点,并依此点击,即可实现数据抓取。不过 Selenium 最大的缺点就是效率低,因此它只适合做小规模的数据采集工作。
  开课吧广场-人才学习交流平台

人以光速离开地球一年,再以光速返回,那么地球上过去了多长时间?没有读过爱因斯坦理论的人,肯定认为是两年,因为在我们传统思想里,无论你什么速度离开地球,以什么速度回来,时间总是两年,时间与你去回的速度是无关的。但爱因斯坦的相对论则不那么认为,飞如果一个小行星撞上太阳,太阳会发生什么变化呢?小行星的个头和质量都有大有小,大型小行星撞击地球会引发灾难,直径超过100米的小行星就可以造成区域性灾难,直径超过五公里的小行星会引发全球性大灾难,造成全球性生物灭绝,科学家认为6如果地球缩到只有一个电子大小,那么目前可观测的宇宙有多大?如果地球比作一个电子,有人回答,宇宙按照目前可观测920亿光年直径的话,地球直径为12756km,宇宙与地球的直径相差6。81019倍,电子的直径按照通常说法11015m来计算,那传闻特斯拉曾经想找到地球的共振频率,这个频率能计算出来吗?如果发生后果有多严重?题主想问的是地球有没有自然频率以及这个频率是多少,然后借助这一频率敲碎地球吧。答案是肯定的,而且不管是特斯拉也好,还是拉斯特也罢,地球的这个自然频率都是客观存在的,因为宇宙万物都在按进化论来说,人类进化过程中尾巴为什么消失了?是突然消失的还是逐渐消失的?谢邀。这是个很有意思的问题,先说一下本人的看法,我认为人类的尾巴是进化的过程中消失掉的。为什么这么说呢?我们一起来探讨一下。人类的进化关于人类的进化,向来充满了争议,因为在现在发现盘点未来5年有望翻数倍的5大科技龙头,北斗导航迎前所未有的机遇大家好,我是老俞,经过多年发展,我国北斗产业的完整产业链已基本形成,目前,国产北斗产品已输出到120多个国家和地区,北斗系统应用全面开花。北斗是我国自行研制的全球卫星导航系统,可在2020全球综合品牌价值百强榜15个中国品牌上榜,科技品牌增长最快5月21日,由中华商标协会中国人民大学信息分析研究中心和界面新闻界面商学院联合出品的2020全球综合品牌价值百强榜(PRCBrand2020)在区域特色产业发展领导力对话上发布。腾印度疫情重创中国智能手机大厂被砍单,小厂资金劫本报记者陈佳岚广州报道印度新冠肺炎疫情正成为当前全球关注的焦点,截止到5月20日,印度累计新冠肺炎病例总数已超过2500万例。印度第二轮新冠肺炎疫情的肆虐,不仅拖累本国经济复苏,还击败三星和格芯中国巨头拿下世界第一,几乎包揽所有5G芯片订单前段时间,美国商务部针对华为加强管制,不仅将华为推上风口浪尖,也让整个芯片产业成为外界关注的焦点。不过,从日媒发布的二季度全球晶圆厂份额中不难发现,全球芯片产业的格局并未发生太大的中国已经有了好几个发射场,为什么还要在宁波建新发射场?可能很多小伙伴就会有疑问了,我国已经有了四个卫星发射中心,为什么还要再建立一个新的卫星发射中心呢?是不是太浪费了?其实当你认真去观察时就会发展,这不是浪费,象山航天发射中心的规划建3000左右的预算,想组装一台吃鸡电脑,有什么建议?绝地吃鸡入门配置G4560GTX10503500元吃鸡就是它了!绝地求生的官方最低配置要求,处理器i34340内存8GB显卡GTX660,这些硬件的发售价格在2300元左右。如今,
手机上什么软件可以免费制作小程序?手机上没有软件可以免费制作小程序。就算是拖拽式的设计页面用手机来操作也会十分不方便,用什么设备操作简单就用什么设备吧。小程序是可以免费开通的。开通入口httpsu。jcc。cnaCUI设计主要是做什么的?UIUserinterface。即用户界面,包含移动APP,网页,智能穿戴设备界面等。UI主要指界面的样式,美观程度。比如ATM机的页面,APP软件的启动页首页注册登录页等。所谓用今日头条最吸引年轻人的是什么?今日头条最吸引的不一定都是青年人,当然受当今社会氛围影响,吸引年青人占比一定比较少。从青年以上的中年老年人皆有,工农商学兵政的都有。他们为什么能经常光顾头条,主要是今日头条相比其他厦门新经济产业园有哪些优势?厦门新经济产业园,位于厦门环东海域新城片区,由特房集团开发建设,在2019厦门新经济发展大会首次亮相,成为大会唯一重点推荐项目。紧随厦门新经济产业导向,项目立项即受到高规格高标准的为何你在跑步机上可以跑很久,去户外跑步却做不到?我在外面跑的多,不喜欢跑步机!恰恰相反,我在跑步机上做不到。跑步机上如果没有视频播放,实在是太煎熬了,上限最多一小时。而跑在户外就不一样了,不同的路况,上下坡水边山上不同的风景,湖大家说说现在的华为手机好用,还是苹果手机好用?当然是华为手机好用,我一直在用。以前用苹果,现在用华为,我觉得还是华为手机好用其实这两款手机都挺好的,都是当今最顶级品牌,看个人喜欢。这两个品牌我同时都在用。华为现在有了自己的Ha拼多多天天广告苹果手机9块9是真的吗?是真的,平台不会容许欺诈消费者的行为,但是你需要提供大量的资源,比如邀请分享500个人左右你才能拥有,拿多少现金一个道理,所以普通人基本拿不到,就是为了给平台提供流量和人气!如果智比特币的本质只有两个字是真言一个比特币36万人民币,一张图片4。4亿人民币,一个元宇宙概念就让Facebook把公司随了元宇宙的姓Meta。01hr醉了无知便会迷茫,最近我也真是醉了。一个比特币既不是金子做的美版知乎上,外国网友想知道中国哪些技术领先世界和美国中国这些年快速的发展让种花家的人们屡屡心潮澎湃,载人航天空间站火星探测量子通信人造太阳以及华为带领下的5G,芯片技术等等,太多太多让人想起就兴奋不已,虽然我们都很熟悉,但是国外的人华为Mate40Pro样张赏析很适合拍照党的一款设备华为mate40Pro的样张赏析先来看配置上呢,华为Mate40系列这次是标配5000万像素组合,支持11。28英寸超大感光尺寸23mm焦距f1。9光圈。尤其是独家的RYYB超感光芯片是哪位科学家发明的,从事芯片研究的科学家获得过诺贝尔奖吗?答芯片这个称呼给人狭义的感觉,以为只是处理器,其实称呼集成电路更靠谱,发明者正是2000年诺贝尔物理学奖获得者,美国工程师杰克基尔比。没错!不是我们一贯认为的科学家,而是工程师,是