为什么将输出从漂亮的汤转换为文本会给我一个错误?

我需要获取一个列表,以便可以将输出分为3列。 因此,要将其转换为列表,我只需.text即可。但这给了我一个错误。

import requests
from bs4 import BeautifulSoup as bs

lis=[]
headers = {'X-Requested-With': 'XMLHttpRequest'}
r = requests.get('https://www.governmentjobs.com/careers/home/index?agency=sdcounty&sort=PositionTitle&isDescendingSort=false&_=',headers=headers)
soup = bs(r.content,'lxml')
containers  = soup.findAll('li',attrs = {'class':'list-item'}) # gives container with all we need
smt = soup.findAll('ul',attrs={'class':'list-meta'})
for s in smt:
    for li in s.findAll('li')[1]:
        print(li.text)

错误:

    self.__class__.__name__,attr))
AttributeError: 'NavigableString' object has no attribute 'text'

如果我只是print(li)

为什么将输出从漂亮的汤转换为文本会给我一个错误?

究竟是什么导致此错误? Span标签?

我只需要3列:

Column1: Regular - Full time  
Column2: $63,606.40 - $70,137.60 
Column3: Regular - Full time  
namoral 回答:为什么将输出从漂亮的汤转换为文本会给我一个错误?

您可以使用select通过Tag方法获取text元素。

headers = {'X-Requested-With': 'XMLHttpRequest'}
r = requests.get(
    'https://www.governmentjobs.com/careers/home/index?agency=sdcounty&sort=PositionTitle&isDescendingSort=false&_=',headers=headers)
soup = bs(r.content,'lxml')
smt = soup.select("li.list-item")
for s in smt:
    print("---------------")
    for p in s.select("li"):
        print(' '.join(p.text.strip().split()))

输出:

---------------
County of San Diego,CA
Regular - Full time - $63,606.40 - $70,137.60 Annually
Category: Building Maintenance
Department: Facilities Management
---------------
County of San Diego,CA
Regular - Full time - $125,000.00 - $135,000.00 Annually
Category: Airports
Department: DPW-Airport Enterprise Fund
---------------
本文链接:https://www.f2er.com/3094620.html

大家都在问