day 03 selenium与Beautifulsoup4的原理与使用
#爬取京东商品数据import timefrom selenium import webdriverfrom selenium.webdriver.common.keys import Keysdef get_good(driver): num=1 try: time.sleep(5)# 下拉滑动5000px js_code=''' window.scrollTo(0,5000) ''' driver.execute_script(js_code) # 等待5秒,待商品数据加载 time.sleep(5) good_list = driver.find_elements_by_class_name('gl-item') for good in good_list: # print(good) # 商品名称 good_name = good.find_element_by_css_selector('.p-name em').text # print(good_name) good_url = good.find_element_by_css_selector('.p-name a').get_attribute('href') # print(good_url) good_price = good.find_element_by_class_name('p-price').text # print(good_price) # 商品评价 good_commit = good.find_element_by_class_name('p-commit').text good_content = f''' 商品名称:{good_name} 商品链接:{good_url} 商品价格:{good_price} 商品评价:{good_commit} \n ''' print(good_content) with open('jd.txt', 'a', encoding='utf-8')as f: f.write(good_content) num+=1 print('商品信息写入成功!') # 找到下一页并点击 next_tag=driver.find_element_by_class_name('pn-next') next_tag.click() time.sleep(5) # 递归调用函数本身 get_good(driver) finally: driver.close() if __name__=='__main__': driver=webdriver.Chrome() try: driver.implicitly_wait(10) # 往京东发送请求 driver.get('http://www.jd.com/') # 往京东主页输入墨菲定律,按回车键 input_tag=driver.find_element_by_id('key') input_tag.send_keys('墨菲定律') input_tag.send_keys(Keys.ENTER) # 调取商品信息函数 get_good(driver) finally: driver.close()Beautifulsoup4的原理与使用
html_doc='''<html><head><title>The Dormouse's story</title></head><body><p class="sister"><b>$37</b></p> <p class="story" id="p">Once upon a time there were three little sisters; and their names were<a href="http://example.com/elsie" class="sister" >Elsie</a>,<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;and they lived at the bottom of a well.</p> <p class="story">...</p>'''from bs4 import BeautifulSoup# python自带的解析库# soup=BeautifulSoup(html_doc,'html.parser') # 利用bs4得到一个soup对象soup=BeautifulSoup(html_doc,'lxml')# bs4对象# print(soup)# bs4类型# print(type(soup))# 美化功能# html=soup.prettify()# print(html) # 1、直接选择标签(返回的是一个对象) *****print(soup.a) # 获取第一个a标签print(soup.p) # 获取第一个p标签print(type(soup.a)) # <class 'bs4.element.Tag'> # 2、获取标签的名称print(soup.a.name) # 获取a标签的名字 # 3、获取标签的属性 *****print(soup.a.attrs) # 获取a标签内所有的属性print(soup.a.attrs['href']) # 获取a标签内的href属性 # 4、获取标签的文本内容 *****print(soup.p.text) # $37# 5、嵌套选择标签print(soup.p.b) # 获取第一个p标签内的b标签print(soup.p.b.text) # 打印b标签内的文本 # 6、子节点、子孙节点# 获取子节点print(soup.p.children) # 获取第一个p标签所有的子节点,返回的是一个迭代器print(list(soup.p.children)) # list转成列表# 7、父节点,祖先节点print(soup.b.parent)print(soup.b.parents)print(list(soup.b.parents))
转载于:https://www.cnblogs.com/RuiZi/p/11130042.html
day 03 selenium与Beautifulsoup4的原理与使用相关推荐
- Selenium WebDriver的工作原理
先通过一个简单的类比说个好理解的,这个比喻是我从美版知乎Quora上看到的,觉得比较形象.好理解拿来用用. 我们可以把WebDriver驱动浏览器类比成出租车司机开出租车. 在开出租车时有三个角色: ...
- can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用
1写在前面 前面文章是从大方向介绍了CAN网络,让大家对CAN网络有一定的认识.本文将范围缩小,讲述整个CAN网络其中的一个CAN收发器.如下图标记出来的部分: 本文结合众多初学者容易产生的疑问来讲述 ...
- 03、了解自动配置原理笔记
1.SpringBoot特点 1.1.依赖管理 父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</grou ...
- selenium webdriver实现的原理及流程
用Selenium实现自动化,主要需要三个东西: 1.自动化测试代码:自动化测试代码发送请求给浏览器的驱动(比如火狐驱动.谷歌驱动) 2.浏览器驱动:它来解析这些自动化测试的代码,解析后把它们发送给浏 ...
- 《微机原理及接口技术》第03章在线测试
<微机原理及接口技术>第03章在线测试 <微机原理及接口技术>第03章在线测试 剩余时间: 59:53 答题须知:1.本卷满分20分. 2.答完题后, ...
- Selenium原理探秘
Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试.早期也即Selenium1.x时期主要使用Selenium RC(S ...
- selenium工作原理详解
selenium简介 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11), ...
- 一篇文章带你了解-selenium工作原理详解
前言 Selenium是一个用于Web应用程序自动化测试工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla ...
- Selenium的实现原理,一篇文章讲透彻!
Selenium的实现原理 对于Selenium而言,V1.0和V2.0版本的技术方案是截然不同的,V1.0 的核心是Selenium RC,而V2.0 的和核心是WebDriver,可以说完全是两个 ...
最新文章
- 服务器产品选型与性价比图解
- 微软出手,干翻 IDEA?网友:先干翻Eclipse吧..
- 【2018第五届世界互联网大会】世界互联网领先科技成果发布:带你看看这15项“黑科技”...
- git创建本地版本仓库及注意事项
- linux服务 Systemd 简介
- UI5 xml view里control id的生成逻辑
- 学习 Python 编程的 19 个资源
- mysql5.6与mysql5.5不同
- 又论社区风气, 与程序员是干嘛地的.
- Linux 源码编译安装过程-以安装XZ解压为例
- android fileinputstream 获取file,Android FileInputStream没有读取文件
- 【图像处理】图像去雾的前世今生
- Eclipse中启动tomcat: java.lang.OutOfMemoryError: PermGen space的解决方法
- support vector regression(SVR)支持向量回归
- PhotoShop CS5制作残旧的印章效果
- 伍斯特理工学院计算机博士招生,伍斯特理工学院计算机科学(计算机/沟通网络)理学硕士研究生申请要求及申请材料要求清单...
- C#游戏实例:弹砖块游戏
- Unity 粒子系统参数一
- 珍贵的人生格言81条
- jquery二级联动下拉菜单