【问题标题】:While extracting tags from website list is extracted as series of list从网站列表中提取标签时,提取为一系列列表
【发布时间】:2020-01-09 19:19:59
【问题描述】:

我正在尝试从网站中提取论坛名称,当我尝试提取名称时,列表中的每个项目都被添加到列表中的后续项目中。

url = "https://www.f150forum.com/f118"
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
domains = soup.find_all('div',attrs={"class":"trow text-center"})
htags = [i.find_all('h4') for i in domains]
forum = []
for x in htags:
    for i in x :
        results = [i.get_text(strip=True, separator=" ")]
        forum.append(results)
        print(len(forum))

Len(forum) 应该是 59,因为它显示为 1,2,3...59。我应该怎么做才能将每​​个 h4 提取为列表中的一个项目?

【问题讨论】:

  • 它显示,因为您正在打印循环中的长度。取消最后一个打印语句的缩进,你应该只看到59
  • 您看到的是 1, 2, 3... 因为循环中有 print()。您是否希望列表 forum 仅包含来自 <h4> 的 59 个字符串?或 59 个列表,每个列表包含来自 <h4> 的一个字符串?

标签: python web-scraping beautifulsoup


【解决方案1】:

print(len(forum))for i in x 里面 len(x)=59 和另一个完全相同的循环 for x in htags:。这就是您看到 59 次 1,2,...59 的原因。

应该是这样的:

url = "https://www.f150forum.com/f118"
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
htags = soup.select(".trow h4")
forum = []
for h in htags:
    print(h.text)
    forum.append(h.get_text(strip=True, separator=" "))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2017-11-11
    • 1970-01-01
    相关资源
    最近更新 更多