| |
|
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/13 23:36:17- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |