如何在html页面遍历对象,Python:如何使用LXML/Requests遍历HTML元素对象?

博主正尝试使用Requests和LXML库从一个网站抓取数据,并创建一个表格。他们遇到了问题,当遍历带有'houses'类的div元素时,打印出的数据重复显示。代码片段展示了如何获取特定类名的输入字段的值,但结果并未按预期组合成表格格式。在更新中,博主尝试将数据存储到列表中,但仍然没有得到正确的表格结构。问题在于数据收集和组合的方式。
摘要由CSDN通过智能技术生成

我尝试使用LXML&Requests从网站创建一个数据表。我需要标签中的文本和标签中包含的文本。以下是HTML:

Helena
Helena Valley
East Helena
Helena Valley
Helena
Helena Valley

基于此,我想创建一个如下表:

^{pr2}$

使用Requests&LXML,我尝试遍历div class="houses"以获得所需的内容,但每次我尝试打印值时,它都会打印以下内容:['107', '237', '104']

['MT', 'MT', 'MT']

['Occupied', 'Occupied', 'Vacant']

['Helena', 'East Helena', 'Helena']

['Helena Valley', 'Helena Valley', 'Helena Valley']

['107', '237', '104']

['MT', 'MT', 'MT']

['Occupied', 'Occupied', 'Vacant']

['Helena', 'East Helena', 'Helena']

['Helena Valley', 'Helena Valley', 'Helena Valley']

['107', '237', '104']

['MT', 'MT', 'MT']

['Occupied', 'Occupied', 'Vacant']

['Helena', 'East Helena', 'Helena']

['Helena Valley', 'Helena Valley', 'Helena Valley']

这是我的部分代码:link = "example.com"

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(link, headers=headers, allow_redirects=False)

sourceCode = response.content

htmlElem = html.document_fromstring(sourceCode)

houses = htmlElem.find_class('houses')

for house in houses:

houseNumber = house.xpath('//input[@class="houseNumber"]/@value')

houseState = house.xpath('//input[@class="houseState"]/@value')

houseStatus = house.xpath('//input[@class="houseStatus"]/@value')

如何在上面所示的表中捕获数据?我可以用不同的方式遍历houses对象吗?在

更新:@efirvida我已将代码修改为以下内容:link = "example.com"

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

response = requests.get(link, headers=headers, allow_redirects=False)

sourceCode = response.content

htmlElem = html.document_fromstring(sourceCode)

houses = htmlElem.find_class('houses')

houseNumber = []

houseState = []

houseStatus = []

for house in houses:

houseNumber.append(house.xpath('//input[@class="houseNumber"]/@value'))

print(houseNumber)

houseState.append(house.xpath('//input[@class="houseState"]/@value'))

houseStatus.append(house.xpath('//input[@class="houseStatus"]/@value'))

data = map(list, zip(*[houseNumber,houseState,houseStatus]))

当我这样做时,会有以下指纹:[['107', '237', '104']]

[['107', '237', '104'], ['107', '237', '104']]

[['107', '237', '104']], ['107', '237', '104'], ['107', '237', '104']]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值