使用Requests-HTML获取目标元素XPath返回空列表的问题解决
爬取NVIDIA招聘页面职位信息时XPath返回空列表的问题及解决办法
问题概述
尝试爬取NVIDIA招聘页面的职位信息,页面显示有7个有效职位,这些职位均位于class为css-1q2dra3的<li>标签中,但使用page.html.xpath()获取元素时始终返回空列表。
原执行代码
session = HTMLSession() url = ( 'https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite' '?locations=91336993fab910af6d6f80c09504c167' '&jobFamilyGroup=0c40f6bd1d8f10ae43ffaefd46dc7e78' ) page = session.get(url) page.html.render(sleep=1, keep_page=True, scrolldown=1) cards = page.html.xpath("the_xpath_here") print(cards)
尝试过的XPath路径
//*[@id="mainContent"]/div/div[2]/section/ul/li[1]/div[1] /html/body/div/div/div/div[3]/div/div/div[2]/section/ul/li[1]/div[1] //*[@id="mainContent"]/div/div[2]/section/ul/li[1]
仅当使用cards = page.html.xpath('//li')时,能返回页面底部的li元素,但无法获取目标职位对应的元素。
补充排查信息
执行cards = page.html.xpath('//*[@id="mainContent"]/div/div[2]/section/*')时,返回结果为:
[<Element 'p' data-automation-id='jobFoundText' class=('css-12psxof',)>, <Element 'div' data-automation-id='jobJumpToDetailsContainer' class=('css-14l0ax5',)>, <Element 'div' class=('css-19kzrtu',)>]
浏览器检查工具中明确存在<ul>元素,但该结果里并未包含。
解决方法
问题根源在于赋值cards时页面未完全加载,<ul>元素尚未生成。将render方法的sleep参数从1改为2即可解决,修改后的代码如下:
session = HTMLSession() url = ( 'https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite' '?locations=91336993fab910af6d6f80c09504c167' '&jobFamilyGroup=0c40f6bd1d8f10ae43ffaefd46dc7e78' ) page = session.get(url) page.html.render(sleep=2, keep_page=True, scrolldown=1) cards = page.html.xpath("the_xpath_here") print(cards)
内容的提问来源于stack exchange,提问作者Oluevaera
相关产品推荐
相关产品推荐

