In [1]:
import pandas as pd
from bs4 import BeautifulSoup
import requests
import re
import ast
In [2]:
y2020_link = 'https://leg.colorado.gov/bills-by-bill-number'
y2019_link = 'https://leg.colorado.gov/bills-by-bill-number?field_bill_number_value=&field_bill_type_target_id=All&field_sessions_target_id=2&field_chamber_target_id=All'
y2018_link = 'https://leg.colorado.gov/bills-by-bill-number?field_bill_number_value=&field_bill_type_target_id=All&field_sessions_target_id=3&field_chamber_target_id=All'
y2017_exo_link = 'https://leg.colorado.gov/bills-by-bill-number?field_bill_number_value=&field_bill_type_target_id=All&field_sessions_target_id=4&field_chamber_target_id=All'
y2017_link = 'https://leg.colorado.gov/bills-by-bill-number?field_bill_number_value=&field_bill_type_target_id=All&field_sessions_target_id=5&field_chamber_target_id=All'
y2016_link ='https://leg.colorado.gov/bills-by-bill-number?field_bill_number_value=&field_bill_type_target_id=All&field_sessions_target_id=6&field_chamber_target_id=All'
In [3]:
links_dict = {'y2020_link': y2020_link,
              #'y2019_link': y2019_link,
              #'y2018_link': y2018_link,
              #'y2017_link':y2017_link,
              #'y2016_link':y2016_link
}
In [4]:
all_list = {}
def parse_page(k, url1, url2):
    def actual_recursive(k, url1, url2):
        nonlocal d
        result = requests.get(url2)
        if result.status_code==requests.codes.ok:
            soup = BeautifulSoup(result.content, 'lxml')
        
            for i in soup.find_all('div',class_='field-item even'):
                if i.string is not None:
                    d.append(i.string)


            next_page = soup.find('li', class_='pager-next').string
            #print(next_page)
            
            try:
                if next_page=='Next':
                    this_page = soup.find('li', class_='pager-next').find('a')['href']
                    next_page_2 = f'{url1}{this_page}'
                    actual_recursive(k, url1, next_page_2)
            except:
                pass
    d = []
    actual_recursive(k, url1, url2)
    all_list[k] = d
    return all_list
In [5]:
for key in links_dict:
    final_data = parse_page(key, links_dict[key], links_dict[key])
In [6]:
final_data
Out[6]:
{'y2020_link': ['HB20-1001',
  'HB20-1002',
  'HB20-1003',
  'HB20-1004',
  'HB20-1005',
  'HB20-1006',
  'HB20-1007',
  'HB20-1008',
  'HB20-1009',
  'HB20-1010',
  'HB20-1011',
  'HB20-1012',
  'HB20-1013',
  'HB20-1014',
  'HB20-1015',
  'HB20-1016',
  'HB20-1017',
  'HB20-1018',
  'HB20-1019',
  'HB20-1020',
  'HB20-1021',
  'HB20-1022',
  'HB20-1023',
  'HB20-1024',
  'HB20-1025',
  'HB20-1026',
  'HB20-1027',
  'HB20-1028',
  'HB20-1029',
  'HB20-1030',
  'HB20-1031',
  'HB20-1032',
  'HB20-1033',
  'HB20-1034',
  'HB20-1035',
  'HB20-1036',
  'HB20-1037',
  'HB20-1038',
  'HB20-1039',
  'HB20-1040',
  'HB20-1041',
  'HB20-1042',
  'HB20-1043',
  'HB20-1044',
  'HB20-1045',
  'HB20-1046',
  'HB20-1047',
  'HB20-1048',
  'HB20-1049',
  'HB20-1050',
  'HB20-1051',
  'HB20-1052',
  'HB20-1053',
  'HB20-1054',
  'HB20-1055',
  'HB20-1056',
  'HB20-1057',
  'HB20-1058',
  'HB20-1059',
  'HB20-1060',
  'HB20-1061',
  'HB20-1062',
  'HB20-1063',
  'HB20-1064',
  'HB20-1065',
  'HB20-1066',
  'HB20-1067',
  'HB20-1068',
  'HB20-1069',
  'HB20-1070',
  'HB20-1071',
  'HB20-1072',
  'HB20-1073',
  'HB20-1074',
  'HB20-1075',
  'HB20-1076',
  'HB20-1077',
  'HB20-1078',
  'HB20-1079',
  'HB20-1080',
  'HB20-1081',
  'HB20-1082',
  'HB20-1083',
  'HB20-1084',
  'HB20-1085',
  'HB20-1086',
  'HB20-1087',
  'HB20-1088',
  'HB20-1089',
  'HB20-1090',
  'HB20-1091',
  'HB20-1092',
  'HB20-1093',
  'HB20-1094',
  'HB20-1095',
  'HB20-1096',
  'HB20-1097',
  'HB20-1098',
  'HB20-1099',
  'HB20-1100',
  'HB20-1101',
  'HB20-1102',
  'HB20-1103',
  'HB20-1104',
  'HB20-1105',
  'HB20-1106',
  'HB20-1107',
  'HB20-1108',
  'HB20-1109',
  'HB20-1110',
  'HB20-1111',
  'HB20-1112',
  'HB20-1113',
  'HB20-1114',
  'HB20-1115',
  'HB20-1116',
  'HB20-1117',
  'HB20-1118',
  'HB20-1119',
  'HB20-1120',
  'HB20-1121',
  'HB20-1122',
  'HB20-1123',
  'HB20-1124',
  'HB20-1125',
  'HB20-1126',
  'HB20-1127',
  'HB20-1128',
  'HB20-1129',
  'HB20-1130',
  'HB20-1131',
  'HB20-1132',
  'HB20-1133',
  'HB20-1134',
  'HB20-1135',
  'HB20-1136',
  'HB20-1137',
  'HB20-1138',
  'HB20-1139',
  'HB20-1140',
  'HB20-1141',
  'HB20-1142',
  'HB20-1143',
  'HB20-1144',
  'HB20-1145',
  'HB20-1146',
  'HB20-1147',
  'HB20-1148',
  'HB20-1149',
  'HB20-1150',
  'HB20-1151',
  'HB20-1152',
  'HB20-1153',
  'HB20-1154',
  'HB20-1155',
  'HB20-1156',
  'HB20-1157',
  'HB20-1158',
  'HB20-1159',
  'HB20-1160',
  'HB20-1161',
  'HB20-1162',
  'HB20-1163',
  'HB20-1164',
  'HB20-1165',
  'HB20-1166',
  'HB20-1167',
  'HB20-1168',
  'HB20-1169',
  'HB20-1170',
  'HB20-1171',
  'HB20-1172',
  'HB20-1173',
  'HB20-1174',
  'HB20-1175',
  'HB20-1176',
  'HB20-1177',
  'HB20-1178',
  'HB20-1179',
  'HB20-1180',
  'HB20-1181',
  'HB20-1182',
  'HB20-1183',
  'HB20-1184',
  'HB20-1185',
  'HB20-1186',
  'HB20-1187',
  'HB20-1188',
  'HB20-1189',
  'HB20-1190',
  'HB20-1191',
  'HB20-1192',
  'HB20-1193',
  'HB20-1194',
  'HB20-1195',
  'HB20-1196',
  'HB20-1197',
  'HB20-1198',
  'HB20-1199',
  'HB20-1200',
  'HB20-1201',
  'HB20-1202',
  'HB20-1203',
  'HB20-1204',
  'HB20-1205',
  'HB20-1206',
  'HB20-1207',
  'HB20-1208',
  'HB20-1209',
  'HB20-1210',
  'HB20-1211',
  'HB20-1212',
  'HB20-1213',
  'HB20-1214',
  'HB20-1215',
  'HB20-1216',
  'HB20-1217',
  'HB20-1218',
  'HB20-1219',
  'HB20-1220',
  'HB20-1221',
  'HB20-1222',
  'HB20-1223',
  'HB20-1224',
  'HB20-1225',
  'HB20-1226',
  'HB20-1227',
  'HB20-1228',
  'HB20-1229',
  'HB20-1230',
  'HB20-1231',
  'HB20-1232',
  'HB20-1233',
  'HB20-1234',
  'HB20-1235',
  'HB20-1236',
  'HB20-1237',
  'HB20-1238',
  'HB20-1239',
  'HB20-1240',
  'HB20-1241',
  'HB20-1242',
  'HB20-1243',
  'HB20-1244',
  'HB20-1245',
  'HB20-1246',
  'HB20-1247',
  'HB20-1248',
  'HB20-1249',
  'HB20-1250',
  'HB20-1251',
  'HB20-1252',
  'HB20-1253',
  'HB20-1254',
  'HB20-1255',
  'HB20-1256',
  'HB20-1257',
  'HB20-1258',
  'HB20-1259',
  'HB20-1260',
  'HB20-1261',
  'HB20-1262',
  'HB20-1263',
  'HB20-1264',
  'HB20-1265',
  'HB20-1266',
  'HB20-1267',
  'HB20-1268',
  'HB20-1269',
  'HB20-1270',
  'HB20-1271',
  'HB20-1272',
  'HB20-1273',
  'HB20-1274',
  'HB20-1275',
  'HB20-1276',
  'HB20-1277',
  'HB20-1278',
  'HB20-1279',
  'HB20-1280',
  'HB20-1281',
  'HB20-1282',
  'HB20-1283',
  'HB20-1284',
  'HB20-1285',
  'HB20-1286',
  'HB20-1287',
  'HB20-1288',
  'HB20-1289',
  'HB20-1290',
  'HB20-1291',
  'HB20-1292',
  'HB20-1293',
  'HB20-1294',
  'HB20-1295',
  'HB20-1296',
  'HB20-1297',
  'HB20-1298',
  'HB20-1299',
  'HB20-1300',
  'HB20-1301',
  'HB20-1302',
  'HB20-1303',
  'HB20-1304',
  'HB20-1305',
  'HB20-1306',
  'HB20-1307',
  'HB20-1308',
  'HB20-1309',
  'HB20-1310',
  'HB20-1311',
  'HB20-1312',
  'HB20-1313',
  'HB20-1314',
  'HB20-1315',
  'HB20-1316',
  'HB20-1317',
  'HB20-1318',
  'HB20-1319',
  'HB20-1320',
  'HB20-1321',
  'HB20-1322',
  'HB20-1323',
  'HB20-1324',
  'HB20-1325',
  'HB20-1326',
  'HB20-1327',
  'HB20-1328',
  'HB20-1329',
  'HB20-1330',
  'HB20-1331',
  'HB20-1332',
  'HB20-1333',
  'HB20-1334',
  'HB20-1335',
  'HB20-1336',
  'HB20-1337',
  'HB20-1338',
  'HB20-1339',
  'HB20-1340',
  'HB20-1341',
  'HB20-1342',
  'HB20-1343',
  'HB20-1344',
  'HB20-1345',
  'HB20-1346',
  'HB20-1347',
  'HB20-1348',
  'HB20-1349',
  'HB20-1350',
  'HB20-1351',
  'HB20-1352',
  'HB20-1353',
  'HB20-1354',
  'HB20-1355',
  'HB20-1356',
  'HB20-1357',
  'HB20-1358',
  'HB20-1359',
  'HB20-1360',
  'HB20-1361',
  'HB20-1362',
  'HB20-1363',
  'HB20-1364',
  'HB20-1365',
  'HB20-1366',
  'HB20-1367',
  'HB20-1368',
  'HB20-1369',
  'HB20-1370',
  'HB20-1371',
  'HB20-1372',
  'HB20-1373',
  'HB20-1374',
  'HB20-1375',
  'HB20-1376',
  'HB20-1377',
  'HB20-1378',
  'HB20-1379',
  'HB20-1380',
  'HB20-1381',
  'HB20-1382',
  'HB20-1383',
  'HB20-1384',
  'HB20-1385',
  'HB20-1386',
  'HB20-1387',
  'HB20-1388',
  'HB20-1389',
  'HB20-1390',
  'HB20-1391',
  'HB20-1392',
  'HB20-1393',
  'HB20-1394',
  'HB20-1395',
  'HB20-1396',
  'HB20-1397',
  'HB20-1398',
  'HB20-1399',
  'HB20-1400',
  'HB20-1401',
  'HB20-1402',
  'HB20-1403',
  'HB20-1404',
  'HB20-1405',
  'HB20-1406',
  'HB20-1407',
  'HB20-1408',
  'HB20-1409',
  'HB20-1410',
  'HB20-1411',
  'HB20-1412',
  'HB20-1413',
  'HB20-1414',
  'HB20-1415',
  'HB20-1416',
  'HB20-1417',
  'HB20-1418',
  'HB20-1419',
  'HB20-1420',
  'HB20-1421',
  'HB20-1422',
  'HB20-1423',
  'HB20-1424',
  'HB20-1425',
  'HB20-1426',
  'HB20-1427',
  'HCR20-1001',
  'HCR20-1002',
  'HCR20-1003',
  'HJR20-1001',
  'HJR20-1002',
  'HJR20-1003',
  'HJR20-1004',
  'HJR20-1005',
  'HJR20-1006',
  'HJR20-1007',
  'HJR20-1008',
  'HJR20-1009',
  'HJR20-1010',
  'HJR20-1011',
  'HJR20-1012',
  'HJR20-1013',
  'HM20-1001',
  'HM20-1002',
  'HM20-1003',
  'HM20-1004',
  'HR20-1001',
  'HR20-1002',
  'HR20-1003',
  'HR20-1004',
  'SB20-001',
  'SB20-002',
  'SB20-003',
  'SB20-004',
  'SB20-005',
  'SB20-006',
  'SB20-007',
  'SB20-008',
  'SB20-009',
  'SB20-010',
  'SB20-011',
  'SB20-012',
  'SB20-013',
  'SB20-014',
  'SB20-015',
  'SB20-016',
  'SB20-017',
  'SB20-018',
  'SB20-019',
  'SB20-020',
  'SB20-021',
  'SB20-022',
  'SB20-023',
  'SB20-024',
  'SB20-025',
  'SB20-026',
  'SB20-027',
  'SB20-028',
  'SB20-029',
  'SB20-030',
  'SB20-031',
  'SB20-032',
  'SB20-033',
  'SB20-034',
  'SB20-035',
  'SB20-036',
  'SB20-037',
  'SB20-038',
  'SB20-039',
  'SB20-040',
  'SB20-041',
  'SB20-042',
  'SB20-043',
  'SB20-044',
  'SB20-045',
  'SB20-046',
  'SB20-047',
  'SB20-048',
  'SB20-049',
  'SB20-050',
  'SB20-051',
  'SB20-052',
  'SB20-053',
  'SB20-054',
  'SB20-055',
  'SB20-056',
  'SB20-057',
  'SB20-058',
  'SB20-059',
  'SB20-060',
  'SB20-061',
  'SB20-062',
  'SB20-063',
  'SB20-064',
  'SB20-065',
  'SB20-066',
  'SB20-067',
  'SB20-068',
  'SB20-069',
  'SB20-070',
  'SB20-071',
  'SB20-072',
  'SB20-073',
  'SB20-074',
  'SB20-075',
  'SB20-076',
  'SB20-077',
  'SB20-078',
  'SB20-079',
  'SB20-080',
  'SB20-081',
  'SB20-082',
  'SB20-083',
  'SB20-084',
  'SB20-085',
  'SB20-086',
  'SB20-087',
  'SB20-088',
  'SB20-089',
  'SB20-090',
  'SB20-091',
  'SB20-092',
  'SB20-093',
  'SB20-094',
  'SB20-095',
  'SB20-096',
  'SB20-097',
  'SB20-098',
  'SB20-099',
  'SB20-100',
  'SB20-101',
  'SB20-102',
  'SB20-103',
  'SB20-104',
  'SB20-105',
  'SB20-106',
  'SB20-107',
  'SB20-108',
  'SB20-109',
  'SB20-110',
  'SB20-111',
  'SB20-112',
  'SB20-113',
  'SB20-114',
  'SB20-115',
  'SB20-116',
  'SB20-117',
  'SB20-118',
  'SB20-119',
  'SB20-120',
  'SB20-121',
  'SB20-122',
  'SB20-123',
  'SB20-124',
  'SB20-125',
  'SB20-126',
  'SB20-127',
  'SB20-128',
  'SB20-129',
  'SB20-130',
  'SB20-131',
  'SB20-132',
  'SB20-133',
  'SB20-134',
  'SB20-135',
  'SB20-136',
  'SB20-137',
  'SB20-138',
  'SB20-139',
  'SB20-140',
  'SB20-141',
  'SB20-142',
  'SB20-143',
  'SB20-144',
  'SB20-145',
  'SB20-146',
  'SB20-147',
  'SB20-148',
  'SB20-149',
  'SB20-150',
  'SB20-151',
  'SB20-152',
  'SB20-153',
  'SB20-154',
  'SB20-155',
  'SB20-156',
  'SB20-157',
  'SB20-158',
  'SB20-159',
  'SB20-160',
  'SB20-161',
  'SB20-162',
  'SB20-163',
  'SB20-164',
  'SB20-165',
  'SB20-166',
  'SB20-167',
  'SB20-168',
  'SB20-169',
  'SB20-170',
  'SB20-171',
  'SB20-172',
  'SB20-173',
  'SB20-174',
  'SB20-175',
  'SB20-176',
  'SB20-177',
  'SB20-178',
  'SB20-179',
  'SB20-180',
  'SB20-181',
  'SB20-182',
  'SB20-183',
  'SB20-184',
  'SB20-185',
  'SB20-186',
  'SB20-187',
  'SB20-188',
  'SB20-189',
  'SB20-190',
  'SB20-191',
  'SB20-192',
  'SB20-193',
  'SB20-194',
  'SB20-195',
  'SB20-196',
  'SB20-197',
  'SB20-198',
  'SB20-199',
  'SB20-200',
  'SB20-201',
  'SB20-202',
  'SB20-203',
  'SB20-204',
  'SB20-205',
  'SB20-206',
  'SB20-207',
  'SB20-208',
  'SB20-209',
  'SB20-210',
  'SB20-211',
  'SB20-212',
  'SB20-213',
  'SB20-214',
  'SB20-215',
  'SB20-216',
  'SB20-217',
  'SB20-218',
  'SB20-219',
  'SB20-220',
  'SB20-221',
  'SB20-222',
  'SB20-223',
  'SB20-224',
  'SCR20-001',
  'SCR20-002',
  'SJM20-001',
  'SJM20-002',
  'SJR20-001',
  'SJR20-002',
  'SJR20-003',
  'SJR20-004',
  'SJR20-005',
  'SJR20-006',
  'SJR20-007',
  'SJR20-008',
  'SJR20-009',
  'SJR20-010',
  'SJR20-011',
  'SJR20-012',
  'SJR20-013',
  'SJR20-014',
  'SJR20-015',
  'SJR20-016',
  'SJR20-017',
  'SJR20-018',
  'SJR20-019',
  'SJR20-020',
  'SJR20-021',
  'SJR20-022',
  'SJR20-023',
  'SJR20-024',
  'SM20-001',
  'SM20-002',
  'SR20-001',
  'SR20-002',
  'SR20-003',
  'SR20-004',
  'SR20-005']}
In [7]:
!jupyter nbconvert Python_Sample1.ipynb --to html
[NbConvertApp] Converting notebook Python_Sample1.ipynb to html
[NbConvertApp] Writing 281364 bytes to Python_Sample1.html
In [ ]: