我是python中的新编码(可能是几天),基本上是在stackoverflow上学习其他人的代码。我试着编写的代码使用beautifulsoup来获取craigslist上的摩托车的pid和相应的价格。我知道有很多其他方法可以做到这一点但我现在的代码看起来像这样:
from bs4 import BeautifulSoup
from urllib2 import urlopen
u = ""
count = 0
while (count < 9):
site = "http://sfbay.craigslist.org/mca/" + str(u)
html = urlopen(site)
soup = BeautifulSoup(html)
postings = soup('p',{"class":"row"})
f = open("pid.txt", "a")
for post in postings:
x = post.getText()
y = post['data-pid']
prices = post.findAll("span", {"class":"itempp"})
if prices == "":
w = 0
else:
z = str(prices)
z = z[:-8]
w = z[24:]
filewrite = str(count) + " " + str(y) + " " +str(w) + '\n'
print y
print w
f.write(filewrite)
count = count + 1
index = 100 * count
print "index is" + str(index)
u = "index" + str(index) + ".html"
它工作正常,因为我一直在学习,我计划优化它。我现在面临的问题是没有价格的条目仍然出现。有什么明显的东西让我失踪。 感谢。
答案 0 :(得分:3)
问题是您如何比较prices
。你说:
prices = post.findAll("span", {"class":"itempp"})
在BS .findAll
中返回元素列表。当您将价格与空字符串进行比较时,它将始终返回false。
>>>[] == ""
False
将if prices == "":
更改为if prices == []
,一切都应该没问题。
我希望这会有所帮助。