| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 【selenium爬虫】 selenium自动化爬取京东图书信息 -> 正文阅读 |
|
[开发测试]【selenium爬虫】 selenium自动化爬取京东图书信息 |
一、题目要求:搜索京东图书页,自动点击详情页进入,爬取数据信息并且存储到csv中 二、解题思路: 1、需要下载一个chromedriver.exe。下载地址:ChromeDriver Mirror 注意:需要对应自己谷歌的版本,找一个版本相近的即可,可以复制chromedriver.exe文件的路径并加入到电脑的环境变量中去,方便以后使用。 2、程序运行前需要将chromedriver.exe文件导入到你的程序中 3、导入程序运行所需要的包 from selenium import webdriver //自动化爬取 import time //用于程序休息,防止反爬 import numpy as np //这里所引入是为了随机数的产生 4、selenium一些基本操作
1)? find_element_by_css_selector:根据css定位 2)find_element_by_class_name:根据class定位 3)? find_element_by_id:根据id定位 4)? find_element_by_link_text:根据链接的文本来定位?? 5)? find_element_by_name:根据节点名定位 6)? find_element_by_xpath:使用Xpath进行定位 注:如果要提取一列相同指标,则把element改为elements,定位所有符合条件的元素,返回一个List。 ???????????? find_elements_by_xpath
_element.send_keys(‘’):传入数据 _element.clik():鼠标点击_element相关的要素 driver.execute_script(js语句):执行js语句 time.sleep(): 导入time模块,最好设置随机等待时间 driver.back():返回上一页 ?????? ?元素的提取:selenium使用定位后的_element.text提取文本;使用定位后的_element.get_attribute(‘属性名’)提取属性信息。 5、定义函数 1、定义一个首页信息,搜索图书内容,进入你要爬取的就界面 2、对于有些页面是动态加载出来的,可以使用自动化实现下拉的操作 3、在首页先进行爬取每个图书的链接,用于后面进入详情页爬取相关信息 4、进入详情页爬取数据,对于有些空的值进行抛出异常 from selenium import webdriver import time import numpy as np driver=webdriver.Chrome('chromedriver.exe') url='https://www.jd.com/?cu=true&utm_source=www.hao123.com&utm_medium=tuiguang&utm_campaign=t_1000003625_hao123mz&utm_term=4827d256d0214a0483a2ad63c3487d77' listss=[] # 获取首页信息,搜索图书内容 def in_data(): # 传入数据,并实现转跳 driver.get(url) # 获取网页 jd_input = driver.find_element_by_xpath('//*[@id="key"]') # 返回的是一个_element对象 jd_input.clear() # 清除input原本存在的数据 jd_input.send_keys('图书') jd_commit = driver.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i') jd_commit.click() down_scroll(driver) #实现网页的下拉 def down_scroll(driver): old_hight=driver.execute_script('return document.body.scrollHeight') control=True while control: time.sleep(np.random.randint(1, 3)) driver.execute_script('scroll(0,10000)') time.sleep(np.random.randint(2,3)) new_hight=driver.execute_script('document.body.clientHeight') if old_hight==new_hight: control=False else: old_hight=new_hight get_data() lists=[] def get_data(): # 形成各本书的超链接list book_li = driver.find_elements_by_xpath('//*[@id="J_goodsList"]/ul/li') for temp_li in book_li: time.sleep(np.random.randint(1, 3)) temp_href = temp_li.find_element_by_xpath('./div/div[3]/a').get_attribute('href') temp = os.path.join(temp_href) time.sleep(np.random.randint(1, 3)) print(temp) lists.append(temp) # #进入图书详情页 def values(lists): # 新的详情页 for url in lists: driver1=webdriver.Chrome('chromedriver.exe') driver1.get(url) down_scroll(driver1) # 注意获取文本的方式 try: book_name=driver1.find_element_by_xpath('/html/body/div[8]/div/div[2]/div[1]').text price=driver1.find_element_by_xpath('/html/body/div[8]/div/div[2]/div[4]/div/div[1]/div[2]/span[1]/span[2]').text pinjia=driver1.find_element_by_xpath('//*[@id="comment"]/div[2]/div[1]/div[1]/div').text lis=[book_name,pinjia,price] listss.append(lis) print(book_name,price,pinjia) except Exception as a : print(a) if __name__ == '__main__': in_data() values(lists) |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 5:32:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |