昨日回顾:
requests模块使用过
response=request。get()
response。text
response。content
解决字符编码问题
response。encoding=‘utf-8’
1爬虫三部曲
-发送请求
-解析数据
-保存数据
2爬取豆瓣电影接口
-分析目标网站请求流程
-下拉发送异步请求
? -接口地址——json
3json
json。loads()
json。dumps()
4爬取中国黄页手机号码
user_agent 测试是否是浏览器
今日内容
selenium请求库
自动化测试工具
测试:黑盒测试:
? 对用户能看到的界面进行测试。
? 白盒测试:
? 对软件的性能进行测试。(压力测试)
? 手动测试:
? 人为去检测bug
? 自动化测试:
? 通过代码写好的自动化测试脚本检测bug
selenium请求库
1.什么是selenium?
-原本是一个自动化测试工具。
以性能来讲requests比较高
2.为什么要用selenium?
-优点
-通过它可以驱动浏览器,跳过登陆滑动验证
-缺点:
-爬虫效率低
3怎么使用selenium?
-安装驱动
-安装selenium请求库
pip3 install selenium
-html标签查找
-通过属性查找
优先使用:
id:值是唯一的
class:值可以有多个
name:值是input里面拥有的唯一属性
-element查找一个
-elements查找所有
用selenium实战之后
from selenium import webdriver
from selenium.webdriver.common.keys import Keys # 键盘按键操作
import time
driver=webdriver.Chrome(r'E:\python\chromedriver.exe')
try:
driver.implicitly_wait(10)
driver.get(
'https://www.jd.com'
)
search_form=driver.find_element_by_id('key')
search_form.send_keys('森海塞尔')
search_form.send_keys(Keys.ENTER)
time.sleep(3)
goods_div = driver.find_element_by_id('J_goodsList')
goods_list=goods_div.find_elements_by_class_name('gl-item')
for goods in goods_list:
goods_name= goods.find_element_by_css_selector('.p-name em').text
goods_price = goods.find_element_by_css_selector('.p-price i').text
goods_commit = goods.find_element_by_css_selector('.p-commit a').text
goods_url = goods.find_element_by_css_selector('.p-commit a').get_attribute('href')
goods_data=f'''
耳机型号:{goods_name}
耳机价格:{goods_price}
评论数量:{goods_commit}
详情连接:{goods_url}
'''
print(goods_data)
with open('goods.txt', 'a', encoding='utf-8') as f:
f.write(goods_data)
# driver.get(
# 'https://www.blizzardgames.cn/zh/?login'
# )
# time.sleep(5)
# # 通过文本查找登陆按钮
# # search_form=driver.find_element_by_class_name('Navbar-label')
# # search_form.click()
# # search_form=driver.find_element_by_class_name('Navbar-button')
#
# login_p=driver.find_element_by_id('accountName')
# login_p.send_keys('[email protected]')
# pswd_l=driver.find_element_by_id('password')
# pswd_l.send_keys('********')
# pswd_l.send_keys(Keys.ENTER)
#
# time.sleep(50)
#操作键盘上的enter键
# search_form.send_keys(Keys.ENTER)
# follow=driver.find_element_by_class_name('attention-btn')
# follow.click()
time.sleep(10)
finally:
driver.close()
想了点办法从JD淘取了森海塞尔的数据之后,我自闭了,刚刚
goods_div = driver.find_element_by_id(‘J_goodsList‘)
goods_list=goods_div.find_elements_by_class_name(‘gl-item‘)
的elements少了个s,代码运行的时候一直报错,但是又没有提示,在网上查找资料后 终于了解到了,原来-element是查找一个-elements是查找所有,大家千万不要犯和我一样的错误了
原文地址:https://www.cnblogs.com/jimGraymane/p/11432144.html