似乎有些网站没有提供可变投注的输出。 提到的网站只是我尝试的网站之一 _
cleaner('http://www.indeed.com/cmp/Akvelon,-Inc./jobs/Software-Database-Engineer-9f35bfbe02577e2a?sjdu=QwrRXKrqZ3CNX5W-O9jEvRFd8FQI4DEv5V74lSpSnHYgnddE4ZyZFNs76EkGRtDwtEmC1g0ZgP9j4kJzAk16Kmc5zfQEpyLY32nEHt1W9y4')
def _cleaner(websr):
html = urllib2.urlopen(websr).read()
soup = BeautifulSoup(html)
for elm in soup.find("span", id="job_summary").find_all("p"):
betf = elm.get_text()
for i in soup.find("span", id="job_summary").find_all("ul"):
bet = i.get_text(" ")
return betf+" "+bet
答案 0 :(得分:1)
soup.find("span", id="job_summary".find_all("p")
循环中的列表(for
)可能为空,导致bet
或betf
无法分配。您可以预先分配变量以避免此问题:
def _cleaner(website): betf = '' bet = '' html = urllib2.urlopen(website).read() soup = BeautifulSoup(html) for elm in soup.find("span", id="job_summary").find_all("p"): betf = elm.get_text() for i in soup.find("span", id="job_summary").find_all("ul"): bet = i.get_text() return betf+" "+bet
答案 1 :(得分:0)
由于bet
的分配位于循环内的try
块中,soup.find("span", id="job_summary").find_all("ul")
必须为非空,i.get_text()
必须至少成功{{1}要分配一个值。如果失败,您应该确定要执行的操作。您可以在bet
块中指定默认值,或者只是在循环之前指定一些内容。上面的except
也是如此。