51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

python用selenium爬取网页运行仅在url显示data:

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

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-3-28 11:15:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    我在练习一本爬虫书上Selenium的实战,但写完代码运行空白网页出来
    1. from selenium import webdriver
    2. from selenium.common.exceptions import TimeoutException
    3. from selenium.webdriver.common.by import By
    4. from selenium.webdriver.support import expected_conditions as EC
    5. from selenium.webdriver.support.wait import WebDriverWait
    6. from urllib.parse import urljoin
    7. from selenium.webdriver import ChromeOptions
    8. import logging
    9. logging.basicConfig(level=logging.INFO,
    10. format='%(asctime)s - %(levelname)s: %(message)s')
    11. INDEX_URL='https://spa2.scrape.center/page/%7Bpage%7D'
    12. TIME_OUT=10
    13. TOTAL_PAGE=10

    14. option=ChromeOptions()
    15. option.add_experimental_option('excludeSwitches',['enable-automation'])
    16. option.add_experimental_option('useAutomationExtension',False)

    17. browser=webdriver.Chrome(options=option)
    18. browser.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument',{
    19. 'source':'Object.defineProperty(navigator,"webdriver",{get:() => undefined})'
    20. })
    21. wait=WebDriverWait(browser,TIME_OUT)

    22. def scrape_page(url,condition,locator):
    23. logging.info('scraping %s',url)
    24. try:
    25. browser.get(url)
    26. wait.until(condition(locator))
    27. except TimeoutException:
    28. logging.error('error occurred while scraping %s',url,exc_info=True)

    29. def scrape_index(page):
    30. url=INDEX_URL.format(page=page)
    31. scrape_page(url,condition=EC.visibility_of_all_elements_located,
    32. locator=(By.CSS_SELECTOR,'#index .el-row'))

    33. def parse_index():
    34. elements=browser.find_elements(by=By.CSS_SELECTOR,value='#index .el-row .name')
    35. for element in elements:
    36. href=element.get_attribute('href')
    37. yield urljoin(INDEX_URL,href)

    38. def main():
    39. try:
    40. for page in range(1,TOTAL_PAGE+1):
    41. scrape_index(page)
    42. detail_urls=parse_index()
    43. logging.info('details urls %s',list(detail_urls))
    44. finally:
    45. browser.close()
    复制代码

    运行出来结果就是弹出个网页

    书上正常运行可以打印输出每部电影详情页的url


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

    使用道具 举报

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

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2022-3-29 10:38:10 | 只看该作者
    检查下驱动
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:51
  • 签到天数: 668 天

    连续签到: 6 天

    [LV.9]测试副司令

    3#
    发表于 2022-3-29 14:39:15 | 只看该作者
    检查环境
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 07:46 , Processed in 0.065635 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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