我正在编写一个基本的网页抓取代码,它基本上会获取帖子的日期和标题,如果日期> =存储在SQL数据库中的日期和标题!=来自标题也存储在DB,然后做一些事情。
我在执行时遇到语法错误。这是代码:
for i in web_results:
py_newsdate = datetime.strptime(i.find('div', attrs={'class': "infoItem"}).find_all('p')[0].getText()[6:], '%d/%m/%Y')
py_newstitle = i.find('h3').find('a')['title']
if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
else:
py_newslink = i.find('h3').find('a')['href']
web_results_final.append([py_newsdate, py_newstitle, py_newslink])
print(web_results_final)
这是错误:
File "searcher", line 37
else:
^
IndentationError: expected an indented block
我知道必须正确地设计块,但我认为问题可能在于这个“空”如果。
感谢。
答案 0 :(得分:2)
块需要遵循一些东西。如果您有一个阻止空的块,请使用pass
语句:
if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
pass
else:
py_newslink = i.find('h3').find('a')['href']
web_results_final.append([py_newsdate, py_newstitle, py_newslink])
无论您是尝试内联还是多行编写块,都是如此:
if 0: pass
else: print(2)
注意:您必须为else
块添加新行。这不起作用:
if 0: pass; else: print(2)
答案 1 :(得分:1)
如果使用
,效率会更高if not (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
py_newslink = i.find('h3').find('a')['href']
web_results_final.append([py_newsdate, py_newstitle, py_newslink])
答案 2 :(得分:-1)
if (py_newsdate < sql_latest[0][0] or py_newstitle == sql_latest[0][1]):
continue
else:
py_newslink = i.find('h3').find('a')['href']
web_results_final.append([py_newsdate, py_newstitle, py_newslink])