我想不出我的状况有什么问题

2024-04-20 01:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个网页刮板代码,我正在运行的端口到csv文件我所有的大学模块,我不能够理解为什么我的if/else语句不会工作,尝试了许多不同的解决方案,但仍然没有运气。也许我错过了什么? 下面是代码(条件在底部):

from bs4 import BeautifulSoup, BeautifulStoneSoup
# import requests
import csv

with open('timetable.html', encoding='UTF-8', newline='') as html_file:
    soup = BeautifulSoup(html_file, 'lxml')

csv_file = open('lol.csv', 'w', encoding='utf-8')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['Subject', 'Start date', 'Start time', 'End time', 'Location'])

table = soup.find('table')

for modulis in table.find_all('td', class_='modclass'):
    # randam modulį

    # randam modulio pavadinimą

    pav = modulis.find_all('a')[1]
    name = pav['title']
    print(name)

    # modulio laiko pradžia

    time1 = modulis.text[0:5]
    print(time1)

    # modulio laiko pabaiga

    time2 = modulis.text[6:11]
    print(time2)

    # modulio vieta

    aud = modulis.find('a').text[1:]
    print(aud)

    # modulio data

    data = modulis.parent.find('td', class_='date').text
    if data[0] == 0:
        rand = '2019.' + data
    else:
        rand = '2018.' + data
    # rašom csv
    print(rand)
    csv_writer.writerow([name, rand, time1, time2, aud])

它永远不会被认为是真的,所以它总是进入其他语句中,而蚂蚁把错误的年份放进去。 我所有的约会都在2018年结束。xx.xx号,但从0开始的月份应该从2019年开始。xx.xx号你知道吗

而且,数据总是以xx.xx号,因此数据[0]总是选取第一个数字。你知道吗


Tags: csvtextnameimportdatahtmltablefind
1条回答
网友
1楼 · 发布于 2024-04-20 01:35:26

data设置为文本,然后将其计算为int。只要将其更改为“0”,它就可以工作了。你知道吗

...
data = modulis.parent.find('td', class_='date').text
if data[0] == '0':
    rand = '2019.' + data
else:
    rand = '2018.' + data
...

相关问题 更多 >