Python lxmlxpath返回一个空数组
伙计们,我在刮: 如果有人能帮我,我将不胜感激Python lxmlxpath返回一个空数组,python,xpath,web-scraping,lxml,Python,Xpath,Web Scraping,Lxml,伙计们,我在刮: 如果有人能帮我,我将不胜感激 import requests from lxml import html finalurl = f"https://www.twitter.com/user/status/{id}" response = requests.get(finalurl,allow_redirects=True) tree = html.fromstring(response.content)
import requests
from lxml import html
finalurl = f"https://www.twitter.com/user/status/{id}"
response = requests.get(finalurl,allow_redirects=True)
tree = html.fromstring(response.content)
print("getting photolink")
postPhotoLink = tree.xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div/div[2]/div/section/div/div/div/div[1]/div/article/div/div[4]/div/div/div/a/div/div[2]/div/img/@src')
print(postPhotoLink)
结果:
获取photolink
[]尝试使用此XPath,它应该可以工作:
(//img[@class='css-9pa8cd'])[2]/@src
如果不起作用,请尝试使用此XPath,因为一旦获得html,代码就会更改
//img[@data-aria-label-part='']/@src
不需要硒。谢谢大家的帮助。为此,我必须使用selenium,否则请求无法正常工作,在xpath思想中仅选择数字2 img仍然有一些困难。我正在从阵列中手动选择,仍然有效 完整工作代码
import requests
from lxml import html
from selenium import webdriver
import time
finalurl = "https://twitter.com/iForex_com/status/1019547735614255104"
browser = webdriver.Safari()
browser.get(finalurl)
time.sleep(1)
tree = html.fromstring(browser.page_source)
print("getting photolink")
postPhotoLink = tree.xpath('//img[@class="css-9pa8cd"]/@src')
print(postPhotoLink[1])
browser.close()
您是否使用请求从url获取html?finalurl=f“{id}”response=requests.get(finalurl,allow_redirects=True)tree=html.fromstring(response.content)请避免注释中的代码。改为编辑问题。抱歉@mzjn,在问题中编辑。。。添加了更多的代码…页面中的内容是用javascript动态编码的,这是请求无法处理的。恐怕你需要用硒之类的东西。试过了。Posthotolink=tree.xpath('//img[@class=“css-9pa8cd”])[2]/@src')######仍然没有结果。。真奇怪。。有一个地方可以在线测试XPath吗?我在一段代码中运行这个,我得到了无效的表达式…有一个mystipo。。。修正如下:但仍然“//img[@class=“css-9pa8cd”][2]/@src”这很尴尬,我真的不知道如何只获取第二个元素,它不起作用,所以我只是使用该类获取完整的图像数组并选择第2个,就像这个postPhotoLink=tree.xpath('//img[@class=“css-9pa8cd”]/@src')print(postPhotoLink[1])谢谢大家!!