51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1031|回复: 3
打印 上一主题 下一主题

selenium模拟登陆+爬取数据

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 523 天

    连续签到: 5 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2022-6-16 10:00:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点
    1. from selenium import webdriver
    2. from time import sleep
    3. from selenium.webdriver.common.by import By
    4. from lxml import etree
    5. import requests
    6. import time
    7. headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}

    8. driver = webdriver.Chrome()
    9. driver.get('https://www.timeshighereducation.com/')
    10. sleep(5)

    11. driver.find_element(By.XPATH,'//div[@class="col-sm-12"]/div[@class="navbar-button__wrapper"]/ul/li/a[@title="User account"]').click()
    12. sleep(5)
    13. driver.find_element(By.XPATH,'//div[@class="region region-secondary-navigation"]/section/div/ul/li/a[@id="modal-login"]').click()
    14. sleep(5)

    15. sleep(5)
    16. driver.switch_to.frame(driver.find_element(By.XPATH,'//div[@id="modal-content"]/iframe'))

    17. driver.find_element(ByXPATH,'//input[@placeholder="Username or email"]').send_keys("123456")
    18. driver.find_element(By.XPATH,'//input[@placeholder="Password"]').send_keys("123456")
    19. # driver.refresh()
    20. driver.find_element(By.XPATH,'//form[@class="user-login-form"]/div/input[@value="Log in"]').click()
    21. sleep(5)
    22. driver.switch_to.parent_frame
    23. sleep(5)
    复制代码
    解析html字符串,获取需要的信息
    1. def parse_html(html):
    2. text = etree.HTML(html)
    3. node_list = text.xpath('//tbody/tr[@class="odd row-1 js-row"]')
    4. # print(node_list)
    5. for i in node_list:
    6.     try:
    7.         # rank
    8.         rank = i.xpath('/td[@class="rank sorting_1 sorting_2"]/text()')
    9.         # name
    10.         name = i.xpath('/td[@class=" name namesearch"]/a/text()')
    11.         # region
    12.         region = i.xpath('/td/div/div[@class="location"]/span/a/text()')
    13.         #ratio
    14.         # ratio = i.xpath('')
    15.         # 构建json格式的字符串
    16.         items = {
    17.             "排名": rank,
    18.             "名称": name,
    19.             "地区/国家": region
    20.         }
    21.         print(items)
    22.     except:
    23.         pass
    24. def main():
    25. # 循环获取第0~15的网页源码,并解析
    26. for page in range(0, 16):
    27. # 每个网页的网址
    28. url = 'https://www.timeshighereducation.com/world-university-rankings/2022#!/page/'+ str(page) + '/length/25/sort_by/rank/sort_order/asc/cols/stats'
    29. # 爬取网页源码
    30. html = requests.get(url, headers=headers).text
    31. # 解析网页信息
    32. parse_html(html)
    复制代码


    程序运行入口
    1. if name == 'main':
    2. main()
    复制代码
    为什么我爬不到数据,有没有能人赐教,本人初次接触

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-10-22 14:23
  • 签到天数: 1007 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2022-6-17 15:45:32 | 只看该作者
    debug看看什么问题呢。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    1 小时前
  • 签到天数: 2808 天

    连续签到: 1 天

    [LV.Master]测试大本营

    2#
    发表于 2022-6-17 13:16:43 | 只看该作者
    单步调试,
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    3 天前
  • 签到天数: 1511 天

    连续签到: 5 天

    [LV.Master]测试大本营

    1#
    发表于 2022-6-17 10:29:18 | 只看该作者
    下个断点调试
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-11 09:11 , Processed in 0.064508 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表