# 使用xpath去获取猪八戒网上的信息
# 获取页面源代码
url = 'https://jiangmen.zbj.com/search/service/?l=0&kw=saas&r=2'
resp = requests.get(url)
html = resp.text
resp.close()
# 用xpath去解析页面源代码
tree = etree.HTML(html)
a = tree.xpath('/html/body/div[2]/div/div/div[3]/div/div[4]/div[4]/div[1]/div[1]/div/div[3]/div[1]/span/text()')
print(a)
b = tree.xpath('//*[@id="__layout"]/div/div[3]/div/div[4]/div[4]/div[1]/div[1]/div/div[3]/div[1]/span/text()')
print(b)
运行结果:
[]
['¥500']
我遇到了一个使用xpath的问题,上面的a中的xpath是我用开发者工具使用 Copy full xpath得到的位置,我一一对应了一下,是没有错误的,但是运行的结果是一个空列表,而b是我用开发者工具中的copy xpath得到的位置,运行结果是正确的,我想不明白这是为什么?绞尽脑汁都想不明白,谢谢!
最好不要用全路径,路径写的越长月容易出错,页面经过浏览器渲染会增加一些诸如tbody的标签,而代码请求的相应中不一定会有,因此建议尽量简化xpath路径,我的宗旨是:在能准确定位的基础上,路径越短越好
该回答引用ChatGPT
网页的源代码可能会有一些改动,比如说动态加载的内容,这可能导致您复制的XPath在运行时无法生效。在这种情况下,通过使用更动态的XPath,您可以在某些情况下获得正确的结果。
另外一个可能的原因是,您复制的XPath是完整的XPath,其中包括整个HTML文档的根节点,而在使用XPath时,可以省略HTML文档根节点,因此在上面的代码中,b的XPath比a的XPath更短,可能更容易在页面上找到正确的位置。
总的来说,XPath的使用是一种灵活的方法,并不总是适用于所有情况。最好是多试几种不同的XPath表达式,以确定哪个对您的爬取任务最为适用。
——我路胜能有今日境界,全是我天赋异禀….…chatgpt,全部加满!