爬虫

昨日回顾:

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('417184822@qq.com')
    # 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是查找所有,大家千万不要犯和我一样的错误了

posted @ 2019-08-29 21:27  是我,米老鼠  阅读(149)  评论(0编辑  收藏  举报