51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 818|回复: 2
打印 上一主题 下一主题

selenium模拟登录及爬取信息

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

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-9-1 10:06:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    怎么定位下一页
    1. import re
    2. from selenium import webdriver
    3. from selenium.webdriver.common.by import By
    4. from selenium.webdriver.support.ui import WebDriverWait
    5. from selenium.webdriver.support import expected_conditions as EC
    6. from pyquery import PyQuery as pq
    7. from selenium.webdriver import ActionChains
    8. import time
    9. from lxml import etree
    10. driver = webdriver.Chrome()
    11. driver.get("https://www.taobao.com/")
    12. driver.find_element(by=By.XPATH,value='/html/body/div[3]/div[2]/div[2]/div[2]/div[5]/div/div[2]/div[1]/a[1]').click()
    13. time.sleep(6)
    14. handles = driver.window_handles
    15. driver.switch_to.window(handles[-1])
    16. driver.find_element(by=By.ID, value='fm-login-id').send_keys('1')
    17. driver.find_element(by=By.ID, value='fm-login-password').send_keys('1')
    18. driver.find_element(by=By.XPATH,value='/html/body/div/div[2]/div[3]/div/div/div/div[2]/div/form/div[4]/button').click()
    19. time.sleep(6)
    20. driver.switch_to.frame('baxia-dialog-content')
    21. el1 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1_n1z"]')
    22. print(el1.size['width'])
    23. print(el1.size['height'])
    24. el2 = driver.find_element(by=By.XPATH, value='//*[@id="nc_1__scale_text"]')
    25. print(el2.size['width'])
    26. print(el2.size['height'])
    27. time.sleep(2)
    28. driver.maximize_window()
    29. chains = ActionChains(driver)
    30. chains.drag_and_drop_by_offset(el1, el2.size['width'], -el2.size['height'])
    31. # 事件提交
    32. chains.perform()
    33. # driver.close()
    34. # 退出浏览器
    35. # driver.quit()
    36. wait = WebDriverWait(driver, 10)



    37. def search():


    38.     try:
    39.         input = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#q")))
    40.         submit = wait.until(
    41.             EC.element_to_be_clickable((By.CSS_SELECTOR, '#J_TSearchForm > div.search-button > button')))
    42.         input.send_keys('美食')
    43.         submit.click()
    44.         total = wait.until(
    45.             EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.total')))

    46.         get_products()

    47.         return total.text
    48.         driver.find_element(by=By.XPATH,
    49.                             value='//*[@id="mainsrp-pager"]/div/div/div/ul/li[8]/a/span[1]').click()

    50.     except:
    51.         search()






    52. def get_products():
    53.     # wait.until(EC.presence_of_element_located((By.CSS_SELECTOR,'#mainsrp-itemlist.items.item')))#加载宝贝信息并等待
    54.     html = driver.page_source
    55.     doc = pq(html)
    56.     items = doc('#mainsrp-itemlist .items .item').items()  # 得到所有宝贝的内容
    57.     for item in items:
    58.         product = {
    59.             'image': item.find('.pic .img').attr('data-src'),  # 图片链接
    60.             'price': item.find('.price').text(),  # 商品价格
    61.             'deal': item.find('.deal-cnt').text()[:-3],  # 付款人数,-3是为了去掉人付款这几个字
    62.             'title': item.find('.title').text(),  # 商品名称
    63.             'shop': item.find('.shop').text(),  # 店铺名称
    64.             'location': item.find('.location').text()
    65.         }
    66.         print(product)





    67. def main():


    68.     total = search()
    69.     # 用来写csv文件的标题
    70.     start_csv = True

    71.     #total1 = int(re.compile('(\d+)').search(total).group(1))  # 转换为数值型
    72.     #print(total1)




    73. if __name__ == '__main__':
    74.        main()

    复制代码
    运行结果及报错内容

    只能打印第一页内容

    我想要达到的结果

    正常点击下一页,并继续爬取,直到全部爬取完


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

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 10:15
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2022-9-2 11:50:26 | 只看该作者
    代码中要遍历
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    3#
    发表于 2022-9-2 14:07:47 | 只看该作者
    没有操作吗
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-24 22:24 , Processed in 0.065707 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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