鱼C论坛

 找回密码
 立即注册
查看: 3453|回复: 7

[已解决]selenium爬取源码

[复制链接]
发表于 2023-2-5 17:06:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from selenium import webdriver
  2. from time import sleep

  3. from selenium.webdriver.common.by import By
  4. from lxml import html
  5. etree = html.etree


  6. #创建浏览器对象
  7. bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

  8. bro.get('https://xiaoyuan.zhaopin.com/')

  9. sleep(2)
  10. bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
  11. sleep(5)
  12. bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
  13. sleep(2)
  14. s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
  15. sleep(1)
  16. d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
  17. sleep(1)
  18. reponse = bro.page_source
  19. print(reponse)


  20. bro.quit()
复制代码


大佬们,这个扫码登录后为啥爬取不到页面源码呀
最佳答案
2023-2-6 11:27:29
哈岁NB 发表于 2023-2-6 10:54
selenium不是可以直接爬取动态数据吗?

selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一下窗口才可以

对你的代码修改如下:
  1. from selenium import webdriver
  2. from time import sleep

  3. from selenium.webdriver.common.by import By
  4. from lxml import html
  5. etree = html.etree


  6. #创建浏览器对象
  7. bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

  8. bro.get('https://xiaoyuan.zhaopin.com/')

  9. sleep(2)
  10. bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
  11. sleep(5)
  12. bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
  13. sleep(2)
  14. s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
  15. sleep(1)
  16. d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
  17. sleep(1)
  18. bro.switch_to.window(bro.window_handles[-1])                            # 加这一行切换窗口
  19. reponse = bro.page_source
  20. print(reponse)
  21. print('Java工程师-苏州' in reponse)

  22. bro.quit()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-2-5 17:25:19 | 显示全部楼层
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这,可能第一次登录需要绑定手机号
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 21:26:33 | 显示全部楼层
isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这, ...

好的,我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 10:31:21 | 显示全部楼层
isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这, ...

我想问一下,为什么最后爬到的源码是首页的源码,而不是输入搜索java之后的源码呢

为什么源码不是这个呢

为什么源码不是这个呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-6 10:52:53 | 显示全部楼层
哈岁NB 发表于 2023-2-6 10:31
我想问一下,为什么最后爬到的源码是首页的源码,而不是输入搜索java之后的源码呢

因为职位信息并不在源码里面,他是通过 ajax 动态渲染上去的,


他的数据在这个请求里面:
微信图片_20230206105227.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 10:54:30 | 显示全部楼层
isdkz 发表于 2023-2-6 10:52
因为职位信息并不在源码里面,他是通过 ajax 动态渲染上去的,

selenium不是可以直接爬取动态数据吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-6 11:27:29 | 显示全部楼层    本楼为最佳答案   
哈岁NB 发表于 2023-2-6 10:54
selenium不是可以直接爬取动态数据吗?

selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一下窗口才可以

对你的代码修改如下:
  1. from selenium import webdriver
  2. from time import sleep

  3. from selenium.webdriver.common.by import By
  4. from lxml import html
  5. etree = html.etree


  6. #创建浏览器对象
  7. bro = webdriver.Chrome(r'D:/技能/chromedriver.exe')

  8. bro.get('https://xiaoyuan.zhaopin.com/')

  9. sleep(2)
  10. bro.find_element(By.XPATH,'//*[@id="root"]/div/div[1]/div/div[1]/div[2]/a[1]').click()
  11. sleep(5)
  12. bro.find_element(By.XPATH,'//*[@id="root"]/div[2]/div/div/div[3]/span[2]').click()
  13. sleep(2)
  14. s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
  15. sleep(1)
  16. d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div[2]/div/div/div[2]/div/span[2]').click()
  17. sleep(1)
  18. bro.switch_to.window(bro.window_handles[-1])                            # 加这一行切换窗口
  19. reponse = bro.page_source
  20. print(reponse)
  21. print('Java工程师-苏州' in reponse)

  22. bro.quit()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-6 11:31:39 | 显示全部楼层
isdkz 发表于 2023-2-6 11:27
selenium 确实可以获取到渲染后的源码,我刚刚研究了一下发现智联招聘在搜索后打开了新的窗口,要切换一 ...

好的好的,非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 00:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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