Python 如何将空值包含到列表中,这些空值可用于数据帧(不丢失其长度)?

Python 如何将空值包含到列表中,这些空值可用于数据帧(不丢失其长度)?,python,pandas,dataframe,Python,Pandas,Dataframe,我正在浏览一个网站。我希望收集的所有数据都用于创建数据帧df。由于不知道这样做的最佳方法,我使用了.append将值填充到空列表中。然后我使用相同的列表创建一个数据帧 问题我刮取的一些值是空的,但是.append不会将它们放入列表中。因此,列表的长度不等于创建df的长度。我需要知道哪些零件是空的,因为所有东西都直接进入g表 在过去,我使用了pd.series(python_list),但这只是将非空值放在第一位,并用Nan值填充空白点。但这并不能解决问题,因为它会弄乱数据表 代码如下: job_

我正在浏览一个网站。我希望收集的所有数据都用于创建数据帧
df
。由于不知道这样做的最佳方法,我使用了
.append
将值填充到空列表中。然后我使用相同的列表创建一个数据帧

问题我刮取的一些值是空的,但是
.append
不会将它们放入列表中。因此,列表的长度不等于创建df的长度。我需要知道哪些零件是空的,因为所有东西都直接进入g表

在过去,我使用了
pd.series(python_list)
,但这只是将非空值放在第一位,并用Nan值填充空白点。但这并不能解决问题,因为它会弄乱数据表

代码如下:

job_title = []
job_link = []
job_employer = []
job_salary = []
job_posted = []
job_deadline = []

i = 0
while i >= 0:
    url = 'https://www.website.com/page=' + \
        str(i)
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')
    if page.status_code == 200:
        job_elems = soup.find_all(
            'div', class_='cvo_module_offer_box offer_content')

        for job_elem in job_elems:
            try:
                title = job_elem.h2.text
                job_title.append(title)

                link = job_elem.h2.find('a')['href']
                link = link[2:]
                job_link.append(link)

                employer = job_elem.find(
                    'ul', class_='cvo_module_offer_meta').findChild().text
                job_employer.append(employer)

                salary = job_elem.find('span', class_='salary-blue').text
                job_salary.append(salary)

                posted = job_elem.find(
                    'ul', class_='cvo_module_offer_meta offer_dates').findChild().text
                job_posted.append(posted)

                deadline = job_elem.find(
                    'ul', class_='cvo_module_offer_meta offer_dates').contents[3].text
                job_deadline.append(deadline)
            except Exception as e:
                salary = None
                posted = None
                deadline = None
            # print(title)
            # print(link)
            # print(employer)
            # print(salary)
            # print(posted)
            # print(deadline)
            # print()
        i += 1
    else:
        break

df = pandas.DataFrame(
    {
        'Job Title': pandas.Series(job_title),
        'Link': pandas.Series(job_link),
        'Employer': pandas.Series(job_employer),
        'Salary': pandas.Series(job_salary),
        'When Posted': pandas.Series(job_posted),
        'Deadline': pandas.Series(job_deadline)
    })
已解决:

i = 0
while i >= 0:
    url = 'https://www.website.com/page=' + \
        str(i)
    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')
    if page.status_code == 200:
        job_elems = soup.find_all(
            'div', class_='cvo_module_offer_box offer_content')

        for job_elem in job_elems:
            try:
                title = job_elem.h2.text
                job_title.append(title)

                link = job_elem.h2.find('a')['href']
                link = link[2:]
                job_link.append(link)

                employer = job_elem.find(
                    'ul', class_='cvo_module_offer_meta').findChild().text
                job_employer.append(employer)

                salary = job_elem.find('span', class_='salary-blue').text
                job_salary.append(salary)

                posted = job_elem.find(
                    'ul', class_='cvo_module_offer_meta offer_dates').findChild().text
                job_posted.append(posted)

                deadline = job_elem.find(
                    'ul', class_='cvo_module_offer_meta offer_dates').contents[3].text
                job_deadline.append(deadline)
            except Exception as e:
                salary = None
                job_salary.append(salary)
                posted = None
                job_posted.append(posted)
                deadline = None
                job_deadline.append(deadline)
            # print(title)
            # print(link)
            # print(employer)
            # print(salary)
            # print(posted)
            # print(deadline)
            # print()
        i += 1
    else:
        break

df = pandas.DataFrame(
    {
        'Job Title': pandas.Series(job_title),
        'Link': pandas.Series(job_link),
        'Employer': pandas.Series(job_employer),
        'Salary': pandas.Series(job_salary),
        'When Posted': pandas.Series(job_posted),
        'Deadline': pandas.Series(job_deadline)
    })

由于@chepner

的作用,您必须在每个列表中添加一个
try
&
块,除了
块之外,最好对此imo使用字典,然后只需将
np.nan
传递到空值,假设引发异常。您将
salary
等设置为
None
,但取决于异常发生的时间,您实际上从未调用
job\u salary.append
,等等。
例外情况除外,因为e:
是不好的做法。当i>=0:时,你为什么要做
,而你只将
i
增加1?@AMC我最近开始学习编程。因为我是这个领域的新手,所以我通过基于项目的学习来学习。我现在可能做事情效率不高,目标是开始并向前迈进。@Data新手谢谢你的提示!当我开始其他小项目的时候,我需要看看它!如果div元素不包含您要查找的元素之一,那么保证不包含任何其他元素?或者你只是想在这种情况下忽略它?