哈岁NB 发表于 2023-2-5 17:06:22

selenium爬取源码

from selenium import webdriver
from time import sleep

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


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

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

sleep(2)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/div/a').click()
sleep(5)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/span').click()
sleep(2)
s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
sleep(1)
d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/div/div/span').click()
sleep(1)
reponse = bro.page_source
print(reponse)


bro.quit()

大佬们,这个扫码登录后为啥爬取不到页面源码呀

isdkz 发表于 2023-2-5 17:25:19

代码我测试了没有问题,你自己先走一遍流程嘛

在微信扫码登录后有一个绑定手机号的过程,问题就出在这,可能第一次登录需要绑定手机号

哈岁NB 发表于 2023-2-5 21:26:33

isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

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

好的,我试试

哈岁NB 发表于 2023-2-6 10:31:21

isdkz 发表于 2023-2-5 17:25
代码我测试了没有问题,你自己先走一遍流程嘛

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

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

isdkz 发表于 2023-2-6 10:52:53

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

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


他的数据在这个请求里面:

哈岁NB 发表于 2023-2-6 10:54:30

isdkz 发表于 2023-2-6 10:52
因为职位信息并不在源码里面,他是通过 ajax 动态渲染上去的,




selenium不是可以直接爬取动态数据吗?

isdkz 发表于 2023-2-6 11:27:29

哈岁NB 发表于 2023-2-6 10:54
selenium不是可以直接爬取动态数据吗?

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

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

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


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

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

sleep(2)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/div/a').click()
sleep(5)
bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/span').click()
sleep(2)
s = bro.find_element(By.XPATH,'//*[@id="search_input_one"]').send_keys('java')
sleep(1)
d = bro.find_element(By.XPATH,'//*[@id="root"]/div/div/div/div/div/div/span').click()
sleep(1)
bro.switch_to.window(bro.window_handles[-1])                            # 加这一行切换窗口
reponse = bro.page_source
print(reponse)
print('Java工程师-苏州' in reponse)

bro.quit()

哈岁NB 发表于 2023-2-6 11:31:39

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

好的好的,非常感谢
页: [1]
查看完整版本: selenium爬取源码