我昨天问了一个问题,从@QHarr那里得到了一个答案,像Workday这样的动态网站(以https://wd1.myworkdaysite.com/recruiting/upenn/careers-at-penn为例)通过发出额外的XHR请求来生成职位链接。因此,如果我想提取特定的工作岗位链接,使用HTML解析或CSS选择器按关键字进行刮取的正常网页是不可行的,而链接无法从Selenium驱动程序生成的HTML源代码中提取。(基于WeiZhang2017的GitHub帖子:https://gist.github.com/Weizhang2017/0029b2ff59e943ca9f024c117fbdf88a)
在我的例子中,像Workday这样的网站在需要时使用Ajax加载数据,我使用Selenium模拟页面向下滚动并根据需要获取更多数据。然而,关于使用Selenium获取JSON响应,我搜索了很多,但没有找到适合我需要的答案
一般来说,我的想法是通过3个步骤提取特定职位的链接:
然而,我的问题来了
第1步:我通过一个循环来向下滚动我想要的页面。没问题
scroll = 3
while scroll:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
time.sleep(3)
scroll = scroll -1
第二步:我不知道什么样的方法可以在搜索了很多之后起作用,也找不到一个简单易懂的答案。(我不熟悉Python和Selenium,对动态网站的理解有限抓取)
第三步:我想一旦获得了Chrome Inspect网络预览中显示的JSON数据(假设它名为log),我就可以处理搜索并获得我想要的(特定职位的链接)
list = ['https://wd1.myworkdaysite.com' + x['title']['commonlink'] for x in log['body']['children'][0]['children'][0]['listItems'] if x['instance'][0]['text']==mySpecificWords]
感谢您对step2解决方案的任何想法
目前没有回答
相关问题 更多 >
编程相关推荐