我想用xpath爬取名称栏下的所有名称代码如下
import requests
from lxml import etree
import pandas as pd
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
lists = []
for i in range(1):
url = "https://www.nppa.gov.cn/nppa/contents/320/106516.shtml"
response = requests.get(url,headers=header).content
# print(response.text)
html = etree.HTML(response)
result = html.xpath('/html/body/div[2]/div[4]/div[2]/div[2]/table[2]/tr')
print(result)
for results in result:
title = results.xpath("./td[1]/text()")[0]
print(title)
结果只能爬取到‘序号’这一个文本。更改result 一行的最后一个tr标签为tr[1]结果仍然是输出‘序号’
更改为tr[2]之后输出结果为空列表,求解惑
该回答引用ChatGPT4与博主@晓码自在合作编写:
从你的代码和描述来看,有几个可能的原因导致无法正确爬取名称:
要解决这个问题,你可以:
我认为原因1和2更大概率导致你的问题。你可以根据我提供的思路和示例,调整XPath表达式,最终获取到正确的名称内容