我学会了一些废弃网站的简单技巧,并希望将它们应用到一个非常小的项目中。在这里,我想从此website获取所有列出结果的每个标题。我相信我给了正确的X路径,我能够获得其他文本信息(比如搜索框之前的文本)。但每当我试图废弃身体容器中的信息时,我得到'[]'空白结果(我也尝试过多种X路径,所以我认为问题不太可能是由此造成的)。
result = requests.get("https://www.hotel.info/Search?lng=EN&LACCode=L172544%7CTHA&hs_f_locationnr=172544&hs_destination=Bangkok+Metropolitan+Region%2C+Thailand&HotelMasterID=&ChainID=&hs_arrival=&hs_departure=&h_persons_total=1&hs_rooms=1&hs_roomType=2&cpn=5&location=Bangkok+Metropolitan+Region%2C+Thailand", allow_redirects=False)
selector = etree.HTML(result.text)
result.status_code
200
title1 = selector.xpath('.//*[@id="L132761"]/@title')
print(title1)
[]
title2 = selector.xpath('.//*[@id="L132761"]/@title/text()')
print(title2)
[]
title3 = selector.xpath('.//*[@id="L132761"]/@href')
print(title3)
[]
Chrome上的DevTool屏幕截图为here。因此,我想要的第一个项目是“曼谷铂尔曼酒店”。
我想这是因为这部分不是“纯粹的”文字?我不能在网站上用鼠标选择这些单词。但我不知道如何废弃这类信息。点击标题并转到其网站后,我可以删除此子链接中的文本。
新编辑:“result.text [:1000]”返回结果以:
'\r\n<!DOCTYPE html>\r\n<!--[if IE 8 ]><html class="ie ie8" lang="EN"><![endif]-->\r\n<!--[if IE 9 ]><html class="ie9" lang="EN"><![endif]-->\r\n<!--[if (gt IE 9)|!(IE)]><!-->\r\n<!--<![endif]-->\r\n<head>\r\n\t<meta name="viewport" content="width=device-width, initial-scale=1.0">\r\n\t<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />\r\n\t<title>HOTEL INFO | Hotels Bangkok Metropolitan Region, Thailand</title>\r\n\t<meta charset="utf-8" /><script type="text/javascript">window.NREUM||(NREUM={});
这部分是由javascript生成的吗?
我希望我能清楚地解释这个问题。请告诉我如何解决这个问题,或者给我任何你能想到的建议。
谢谢!
答案 0 :(得分:0)
requests.get
获得简单的HTML。
我相信您尝试访问的内容是由javascript生成的,请求不会执行。
您可以通过打印result.text
并查看requests.get
返回的内容来验证它。
如果是这种情况,你可以尝试使用像Selenium这样的东西。