如何在密集的 html 树中获取 xpath href
how to get xpath href in a dense html tree
我正在尝试为以下 url
获取 href
数据
url = r'https://pubmed.ncbi.nlm.nih.gov/?term=COVID-19&filter=simsearch1.fha&page=1'
使用下面的代码
lxml.html.fromstring(url).xpath('//div[contains(@class,"inner-wrap")]//div/a[contains(@class,"labs-docsum-title")]//@href')
我已经为 xpath 中的字符串尝试了许多其他替代方法,例如
.xpath('.//div/a/@href')
和
.xpath(r'/html/body/main/div[8]/div[2]/section/div[1]/div/article[1]/div[2]/div[1]/a[1]/@href')
但我每次都得到一个空 []
。我相信我没有得到正确的层次结构(父子)树,但无法找出问题所在。我想要的解决方案可能类似于:
print(href)
"/32139372/?from_term=COVID-19&from_filter=simsearch1.fha&from_page=1&from_pos=1"
迭代中的第一个项目
试试这样的东西:
url = "https://pubmed.ncbi.nlm.nih.gov/?term=COVID-19&filter=simsearch1.fha&page=1"
resp = requests.get(url)
doc = lxml.html.fromstring(resp.text)
links = doc.xpath('//div/a[@class="labs-docsum-title"]')
print(links[0].attrib.get('href'))
输出:
/32139372/?from_term=COVID-19&from_filter=simsearch1.fha&from_page=1&from_pos=1
我正在尝试为以下 url
获取href
数据
url = r'https://pubmed.ncbi.nlm.nih.gov/?term=COVID-19&filter=simsearch1.fha&page=1'
使用下面的代码
lxml.html.fromstring(url).xpath('//div[contains(@class,"inner-wrap")]//div/a[contains(@class,"labs-docsum-title")]//@href')
我已经为 xpath 中的字符串尝试了许多其他替代方法,例如
.xpath('.//div/a/@href')
和
.xpath(r'/html/body/main/div[8]/div[2]/section/div[1]/div/article[1]/div[2]/div[1]/a[1]/@href')
但我每次都得到一个空 []
。我相信我没有得到正确的层次结构(父子)树,但无法找出问题所在。我想要的解决方案可能类似于:
print(href)
"/32139372/?from_term=COVID-19&from_filter=simsearch1.fha&from_page=1&from_pos=1"
迭代中的第一个项目
试试这样的东西:
url = "https://pubmed.ncbi.nlm.nih.gov/?term=COVID-19&filter=simsearch1.fha&page=1"
resp = requests.get(url)
doc = lxml.html.fromstring(resp.text)
links = doc.xpath('//div/a[@class="labs-docsum-title"]')
print(links[0].attrib.get('href'))
输出:
/32139372/?from_term=COVID-19&from_filter=simsearch1.fha&from_page=1&from_pos=1