我试图从一个网页中获取一些信息,并将其中一个变量写入文件中,但是我没有运气,这可能很容易,但我迷路了。下面是其中一个行的示例,其中有1253行。
<div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">我在后面的字段叫做数据名,它不是在每一行的同一位置。我试过了,但没有用
mfile=open('itemlist.txt','r')
mfile2=open('output.txt','a')
for row in mfile:
if char =='data-name':
mfile2.write(char)编辑1:
我制作了一个示例文件“你好,嗨,花生”,如果是这样的话:
for row in mfile:
print row.index('hello')它会像预期的那样打印0,但是当我将hello改为hi时,它没有返回1,它什么也没有返回。
发布于 2015-07-05 20:55:16
让我们尝试使用常见的字符串操作方法来查找值:
>>> line = '''<div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'''我们可以使用str.index查找字符串在字符串中的位置:
>>> line.index('data-name')
87因此,现在我们知道,我们需要开始查看索引87中我们感兴趣的属性:
>>> line[87:]
'data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'现在,我们还需要删除data-name="部件:
>>> start = line.index('data-name') + len('data-name="')
>>> start
98
>>> line[start:]
'Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">'现在,我们只需要找到结束引号的索引,然后只提取属性值:
>>> end = line.index('"', start)
>>> end
118
>>> line[start:end]
'Kill-a-Watt Allbrero'然后我们就有了解决办法:
start = line.index('data-name') + len('data-name="')
end = line.index('"', start)
print(line[start:end])我们可以把它放在循环中:
with open('itemlist.txt','r') as mfile, open('output.txt','a') as mfile2w
for line in mfile:
start = line.index('data-name') + len('data-name="')
end = line.index('"', start)
mfile2.write(line[start:end])
mfile2.write('\n')发布于 2015-07-05 20:54:11
您也可以使用美汤
a.html
<html>
<head>
<title> Asdf </title>
</head>
<body>
<div class='entry qual-5 used-demoman slot-head bestprice custom' data-price='3280000' data-name="Kill-a-Watt Allbrero" data-quality="5" data-australium="normal" data-class="demoman" data-particle_effect="56" data-paint="" data-slot="cosmetic" data-consignment="consignment">
</body>
</html>a.py
from bs4 import BeautifulSoup
with open('a.html') as f:
lines = f.readlines()
soup = BeautifulSoup(''.join(lines), 'html.parser')
result = soup.findAll('div')[0]['data-price']
print result
# prints 3280000我的观点是,如果您的任务非常容易,就像在您的示例中一样,实际上不需要使用beautifulsoup。但是,如果是更复杂,或它将更加复杂。考虑在beautifulsoup中尝试一下。
https://stackoverflow.com/questions/31233974
复制相似问题