【问题标题】:“Invalid syntax” error after for statementfor 语句后出现“无效语法”错误
【发布时间】:2020-07-30 08:14:26
【问题描述】:

我尝试从网站获取 URL 列表。我找到了正确的代码并将该变量命名为“表”。当我输入代码“for links in table.findall('tr', href=True)”时,它返回:

文件“”,第 1 行 对于 table.findall('tr', href=True) 中的链接 ^ SyntaxError: 无效语法

我尝试将 'tr' 替换为 'a',但这给了我相同的结果。就在这行代码之前,我给出了命令 print(table),它给了我正确的 html 代码,所以我认为声明 table 变量之前的一切都应该没问题。

为了清楚起见,这里是我的完整代码。再次,如果阅读困难或看起来草率,我很抱歉。提示和技巧总是受欢迎的。

代码:

from bs4 import BeautifulSoup
import requests
import urllib
import urllib.request

URL = 'https://www.transfermarkt.nl/eredivisie/kreuztabelle/wettbewerb/NL1/saison_id/2013'
Page = requests.get(URL, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.48'})
soup = BeautifulSoup(Page.text, "html.parser")
table = soup.find('div', {"class":"responsive-table"})
for links in table.findall('tr', href=True)

【问题讨论】:

  • 您需要在for循环条件的末尾放置一个冒号(:),即for links in table.findall('tr', href=True):;)
  • 这段代码应该做什么? for 不完整,它缺少冒号 : 和套件(正文)。请提供minimal reproducible example
  • 这部分html代码中有多个指向其他网站(href)的链接。我希望提取所有这些链接的列表。我添加了冒号并按照 SetMao 的建议添加了命令 print(links) 但现在我知道该对象不可调用
  • 当我在 find 和 all 之间插入下划线 _ 时(所以:find_all),它可以工作,但它只给我一条记录。我期待更多。还有什么要解决的:-)?

标签: python-3.x for-loop


【解决方案1】:

尝试替换

for links in table.findall('tr', href=True)

for links in table.findall('tr', href=True):
    print(links)

您可以在python官方教程中获得更多信息。

https://docs.python.org/3/tutorial/controlflow.html#for-statements

【讨论】:

  • 嗨 SetMao,现在它说:'NoneType object is not callable'
  • 打印你的表,看起来你的表没有。
猜你喜欢
  • 2014-11-23
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2019-04-21
相关资源
最近更新 更多