├── .gitignore ├── README.md ├── SF_crawl_analysis.ipynb ├── data ├── all_outlinks.csv ├── categorized.csv ├── internal_all.csv └── urls.csv ├── output ├── 404-links.csv └── pic.png └── requirements.txt /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | .python-version 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Screaming Frog crawl analysis in Python 2 | Analyzing a Screaming Frog crawl with Python. AKA introduction to Pandas and Jupyter Notebooks for SEOs. 3 | 4 | ## About 5 | 6 | This notebook aims to show you some basic Pandas for SEO purposes. 7 | This uses an example crawl from [Python.org](https://www.python.org/). 8 | More info [on our blog](https://www.databulle.com/blog/code/crawl-analysis-in-python.html). 9 | 10 | ## Setup 11 | 12 | Make sure you installed the dependencies: 13 | 14 | pip install -r requirements.txt 15 | 16 | 17 | Then simply launch Jupyter Notebook: 18 | 19 | jupyter notebook 20 | 21 | 22 | Access your notebooks on . 23 | Enjoy ! 24 | 25 | ## Contributing 26 | 27 | If you wish to contribute to this repository or to report an issue, please use [GitLab](https://gitlab.com/databulle/screamingfrog-python-analysis). -------------------------------------------------------------------------------- /SF_crawl_analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Python Pandas Screaming Frog notebook\n", 8 | "\n", 9 | "Analyzing a Screaming Frog crawl with Python Pandas and a bunch of other stuff. \n", 10 | "Check out [this article](https://www.databulle.com/blog/code/crawl-analysis-in-python.html) for more info. \n", 11 | "\n", 12 | "Make sure you installed the dependencies: simply run `pip install -r requirements.txt` to install. \n", 13 | "\n", 14 | "\n", 15 | "You'll need two exports from Screaming Frog: \n", 16 | "- internal_all.csv \n", 17 | "- all_outlinks.csv \n", 18 | "\n", 19 | "Place them in the `data` directory. " 20 | ] 21 | }, 22 | { 23 | "cell_type": "markdown", 24 | "metadata": {}, 25 | "source": [ 26 | "
\n", 27 | "
\n", 28 | "Let's import the Pandas library. " 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": 1, 34 | "metadata": {}, 35 | "outputs": [], 36 | "source": [ 37 | "import pandas as pd\n", 38 | "\n", 39 | "# Display plots directly in the notebook\n", 40 | "%matplotlib inline " 41 | ] 42 | }, 43 | { 44 | "cell_type": "markdown", 45 | "metadata": {}, 46 | "source": [ 47 | "We can now import our crawl data directly in two Pandas dataframes: \n", 48 | "- one (`urls`) for URLs data, \n", 49 | "- and the second (`links`) for links. \n" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 2, 55 | "metadata": {}, 56 | "outputs": [ 57 | { 58 | "data": { 59 | "text/html": [ 60 | "
\n", 61 | "\n", 74 | "\n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | "
AddressStatus CodeStatusTitle 1Meta Description 1H1-1H1-2Meta Robots 1Meta Refresh 1Canonical Link Element 1Word CountText RatioCrawl DepthInlinksUnique InlinksOutlinksUnique OutlinksExternal OutlinksUnique External OutlinksRedirect URI
0https://www.python.org/dev/peps/pep-0470301MOVED PERMANENTLYNaNNaNNaNNaNNaNNaNNaN00.0000003320000https://www.python.org/dev/peps/pep-0470/
1https://www.python.org/events/python-user-grou...200OKDjango Girls Ibagué | Python.orgThe official home of the Python Programming La...NaNDjango Girls IbaguéNaNNaNNaN3356.42367522315113453522NaN
2https://www.python.org/dev/peps/pep-0471301MOVED PERMANENTLYNaNNaNNaNNaNNaNNaNNaN00.0000003520000https://www.python.org/dev/peps/pep-0471/
3https://www.python.org/m/files/f990-2001.pdf200OKNaNNaNNaNNaNNaNNaNNaN00.0000003110000NaN
4https://www.python.org/ftp/python/3.5.0/python...200OKNaNNaNNaNNaNNaNNaNNaN00.0000002220000NaN
\n", 218 | "
" 219 | ], 220 | "text/plain": [ 221 | " Address Status Code \\\n", 222 | "0 https://www.python.org/dev/peps/pep-0470 301 \n", 223 | "1 https://www.python.org/events/python-user-grou... 200 \n", 224 | "2 https://www.python.org/dev/peps/pep-0471 301 \n", 225 | "3 https://www.python.org/m/files/f990-2001.pdf 200 \n", 226 | "4 https://www.python.org/ftp/python/3.5.0/python... 200 \n", 227 | "\n", 228 | " Status Title 1 \\\n", 229 | "0 MOVED PERMANENTLY NaN \n", 230 | "1 OK Django Girls Ibagué | Python.org \n", 231 | "2 MOVED PERMANENTLY NaN \n", 232 | "3 OK NaN \n", 233 | "4 OK NaN \n", 234 | "\n", 235 | " Meta Description 1 H1-1 \\\n", 236 | "0 NaN NaN \n", 237 | "1 The official home of the Python Programming La... NaN \n", 238 | "2 NaN NaN \n", 239 | "3 NaN NaN \n", 240 | "4 NaN NaN \n", 241 | "\n", 242 | " H1-2 Meta Robots 1 Meta Refresh 1 \\\n", 243 | "0 NaN NaN NaN \n", 244 | "1 Django Girls Ibagué NaN NaN \n", 245 | "2 NaN NaN NaN \n", 246 | "3 NaN NaN NaN \n", 247 | "4 NaN NaN NaN \n", 248 | "\n", 249 | " Canonical Link Element 1 Word Count Text Ratio Crawl Depth Inlinks \\\n", 250 | "0 NaN 0 0.000000 3 3 \n", 251 | "1 NaN 335 6.423675 2 23 \n", 252 | "2 NaN 0 0.000000 3 5 \n", 253 | "3 NaN 0 0.000000 3 1 \n", 254 | "4 NaN 0 0.000000 2 2 \n", 255 | "\n", 256 | " Unique Inlinks Outlinks Unique Outlinks External Outlinks \\\n", 257 | "0 2 0 0 0 \n", 258 | "1 15 113 45 35 \n", 259 | "2 2 0 0 0 \n", 260 | "3 1 0 0 0 \n", 261 | "4 2 0 0 0 \n", 262 | "\n", 263 | " Unique External Outlinks Redirect URI \n", 264 | "0 0 https://www.python.org/dev/peps/pep-0470/ \n", 265 | "1 22 NaN \n", 266 | "2 0 https://www.python.org/dev/peps/pep-0471/ \n", 267 | "3 0 NaN \n", 268 | "4 0 NaN " 269 | ] 270 | }, 271 | "execution_count": 2, 272 | "metadata": {}, 273 | "output_type": "execute_result" 274 | } 275 | ], 276 | "source": [ 277 | "# We skip the first row with `skiprows`, and\n", 278 | "# load only useful data with `usecols` argument.\n", 279 | "urls = pd.read_csv('data/internal_all.csv',skiprows=1,\n", 280 | " usecols=[\"Address\",\"Status Code\",\"Status\",\n", 281 | " \"Title 1\",\"Meta Description 1\",\"H1-1\",\"H1-2\",\"Meta Robots 1\",\n", 282 | " \"Meta Refresh 1\",\"Canonical Link Element 1\",\"Word Count\",\"Text Ratio\",\n", 283 | " \"Crawl Depth\",\"Inlinks\",\"Unique Inlinks\",\"Outlinks\",\"Unique Outlinks\",\n", 284 | " \"External Outlinks\",\"Unique External Outlinks\",\"Redirect URI\"])\n", 285 | "urls.head() # show the first rows of the dataframe: helpful to check if all went right." 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 3, 291 | "metadata": {}, 292 | "outputs": [ 293 | { 294 | "data": { 295 | "text/html": [ 296 | "
\n", 297 | "\n", 310 | "\n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | "
TypeSourceDestinationStatus Code
0REDIRECThttps://www.python.org/dev/peps/pep-0470https://www.python.org/dev/peps/pep-0470/200.0
1AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/events/python-user-grou...200.0
2AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/events/python-user-grou...200.0
3AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/200.0
4AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/psf-landing/200.0
\n", 358 | "
" 359 | ], 360 | "text/plain": [ 361 | " Type Source \\\n", 362 | "0 REDIRECT https://www.python.org/dev/peps/pep-0470 \n", 363 | "1 AHREF https://www.python.org/events/python-user-grou... \n", 364 | "2 AHREF https://www.python.org/events/python-user-grou... \n", 365 | "3 AHREF https://www.python.org/events/python-user-grou... \n", 366 | "4 AHREF https://www.python.org/events/python-user-grou... \n", 367 | "\n", 368 | " Destination Status Code \n", 369 | "0 https://www.python.org/dev/peps/pep-0470/ 200.0 \n", 370 | "1 https://www.python.org/events/python-user-grou... 200.0 \n", 371 | "2 https://www.python.org/events/python-user-grou... 200.0 \n", 372 | "3 https://www.python.org/ 200.0 \n", 373 | "4 https://www.python.org/psf-landing/ 200.0 " 374 | ] 375 | }, 376 | "execution_count": 3, 377 | "metadata": {}, 378 | "output_type": "execute_result" 379 | } 380 | ], 381 | "source": [ 382 | "# Same thing for the links\n", 383 | "links = pd.read_csv('data/all_outlinks.csv',skiprows=1,usecols=[\"Type\",\"Source\",\"Destination\",\"Status Code\"])\n", 384 | "links.head()" 385 | ] 386 | }, 387 | { 388 | "cell_type": "markdown", 389 | "metadata": {}, 390 | "source": [ 391 | "
\n", 392 | "
\n", 393 | "## Simple grouping and charts\n", 394 | "\n", 395 | "We can now play a little with the data. \n", 396 | "Let's count URLs per Status Code: " 397 | ] 398 | }, 399 | { 400 | "cell_type": "code", 401 | "execution_count": 4, 402 | "metadata": {}, 403 | "outputs": [ 404 | { 405 | "data": { 406 | "text/plain": [ 407 | "Status Code\n", 408 | "200 3202\n", 409 | "301 467\n", 410 | "302 3\n", 411 | "307 449\n", 412 | "404 239\n", 413 | "Name: Status Code, dtype: int64" 414 | ] 415 | }, 416 | "execution_count": 4, 417 | "metadata": {}, 418 | "output_type": "execute_result" 419 | } 420 | ], 421 | "source": [ 422 | "# Status Code pie chart\n", 423 | "urls.groupby('Status Code')['Status Code'].count()" 424 | ] 425 | }, 426 | { 427 | "cell_type": "markdown", 428 | "metadata": {}, 429 | "source": [ 430 | "This is nice, but ugly. \n", 431 | "However, Pandas DataFrames have a very helpful [`plot()`](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html) function. " 432 | ] 433 | }, 434 | { 435 | "cell_type": "code", 436 | "execution_count": 5, 437 | "metadata": {}, 438 | "outputs": [ 439 | { 440 | "data": { 441 | "text/plain": [ 442 | "" 443 | ] 444 | }, 445 | "execution_count": 5, 446 | "metadata": {}, 447 | "output_type": "execute_result" 448 | }, 449 | { 450 | "data": { 451 | "image/png": "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\n", 452 | "text/plain": [ 453 | "" 454 | ] 455 | }, 456 | "metadata": {}, 457 | "output_type": "display_data" 458 | } 459 | ], 460 | "source": [ 461 | "# Depth bar chart\n", 462 | "urls.groupby('Crawl Depth')['Crawl Depth'].count().plot(kind=\"bar\", figsize=(12,5), title='Pages Depth')" 463 | ] 464 | }, 465 | { 466 | "cell_type": "markdown", 467 | "metadata": {}, 468 | "source": [ 469 | "You might want to save this kind of chart to a file. Here's how: " 470 | ] 471 | }, 472 | { 473 | "cell_type": "code", 474 | "execution_count": 6, 475 | "metadata": {}, 476 | "outputs": [ 477 | { 478 | "data": { 479 | "image/png": "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\n", 480 | "text/plain": [ 481 | "" 482 | ] 483 | }, 484 | "metadata": {}, 485 | "output_type": "display_data" 486 | } 487 | ], 488 | "source": [ 489 | "ax = urls.groupby(['Crawl Depth','Status Code'])['Crawl Depth'].count().unstack().plot(kind=\"bar\", figsize=(12,5), title='Status Codes per Depth', stacked=True)\n", 490 | "fig = ax.get_figure()\n", 491 | "fig.savefig('output/pic.png')" 492 | ] 493 | }, 494 | { 495 | "cell_type": "markdown", 496 | "metadata": {}, 497 | "source": [ 498 | "
\n", 499 | "
\n", 500 | "## Filtering and exporting\n", 501 | "Using some built-in filter functionnalities we can access to specific data. \n", 502 | "Example: filtering `links` to find any external link. \n", 503 | "`~` is the \"not\" symbol for filters:" 504 | ] 505 | }, 506 | { 507 | "cell_type": "code", 508 | "execution_count": 7, 509 | "metadata": {}, 510 | "outputs": [ 511 | { 512 | "data": { 513 | "text/html": [ 514 | "
\n", 515 | "\n", 528 | "\n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | "
TypeSourceDestinationStatus Code
31AHREFhttps://www.python.org/events/python-user-grou...http://python.org/dev/peps/301.0
77AHREFhttps://www.python.org/events/python-user-grou...http://python.org/dev/peps/301.0
114AHREFhttps://www.python.org/events/python-user-grou...https://docs.python.org/NaN
115AHREFhttps://www.python.org/events/python-user-grou...https://pypi.python.org/NaN
116AHREFhttps://www.python.org/events/python-user-grou...http://plus.google.com/+PythonNaN
117AHREFhttps://www.python.org/events/python-user-grou...http://www.facebook.com/pythonlang?fref=tsNaN
118AHREFhttps://www.python.org/events/python-user-grou...http://twitter.com/ThePSFNaN
119AHREFhttps://www.python.org/events/python-user-grou...http://brochure.getpython.info/NaN
120AHREFhttps://www.python.org/events/python-user-grou...https://docs.python.org/3/license.htmlNaN
121AHREFhttps://www.python.org/events/python-user-grou...https://wiki.python.org/moin/BeginnersGuideNaN
\n", 611 | "
" 612 | ], 613 | "text/plain": [ 614 | " Type Source \\\n", 615 | "31 AHREF https://www.python.org/events/python-user-grou... \n", 616 | "77 AHREF https://www.python.org/events/python-user-grou... \n", 617 | "114 AHREF https://www.python.org/events/python-user-grou... \n", 618 | "115 AHREF https://www.python.org/events/python-user-grou... \n", 619 | "116 AHREF https://www.python.org/events/python-user-grou... \n", 620 | "117 AHREF https://www.python.org/events/python-user-grou... \n", 621 | "118 AHREF https://www.python.org/events/python-user-grou... \n", 622 | "119 AHREF https://www.python.org/events/python-user-grou... \n", 623 | "120 AHREF https://www.python.org/events/python-user-grou... \n", 624 | "121 AHREF https://www.python.org/events/python-user-grou... \n", 625 | "\n", 626 | " Destination Status Code \n", 627 | "31 http://python.org/dev/peps/ 301.0 \n", 628 | "77 http://python.org/dev/peps/ 301.0 \n", 629 | "114 https://docs.python.org/ NaN \n", 630 | "115 https://pypi.python.org/ NaN \n", 631 | "116 http://plus.google.com/+Python NaN \n", 632 | "117 http://www.facebook.com/pythonlang?fref=ts NaN \n", 633 | "118 http://twitter.com/ThePSF NaN \n", 634 | "119 http://brochure.getpython.info/ NaN \n", 635 | "120 https://docs.python.org/3/license.html NaN \n", 636 | "121 https://wiki.python.org/moin/BeginnersGuide NaN " 637 | ] 638 | }, 639 | "execution_count": 7, 640 | "metadata": {}, 641 | "output_type": "execute_result" 642 | } 643 | ], 644 | "source": [ 645 | "links[~links['Destination'].str.contains('^https://www.python.org')].head(10)" 646 | ] 647 | }, 648 | { 649 | "cell_type": "markdown", 650 | "metadata": {}, 651 | "source": [ 652 | "The `to_csv()` function exports data to CSV files on the go. " 653 | ] 654 | }, 655 | { 656 | "cell_type": "code", 657 | "execution_count": 8, 658 | "metadata": {}, 659 | "outputs": [], 660 | "source": [ 661 | "# Export broken links to CSV\n", 662 | "links[links[\"Status Code\"] == 404].to_csv('output/404-links.csv')" 663 | ] 664 | }, 665 | { 666 | "cell_type": "markdown", 667 | "metadata": {}, 668 | "source": [ 669 | "You can also try more complex filters. For example, let's select HTTP 200 URLs without a Title:" 670 | ] 671 | }, 672 | { 673 | "cell_type": "code", 674 | "execution_count": 9, 675 | "metadata": {}, 676 | "outputs": [ 677 | { 678 | "data": { 679 | "text/html": [ 680 | "
\n", 681 | "\n", 694 | "\n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | "
AddressStatus CodeStatusTitle 1Meta Description 1H1-1H1-2Meta Robots 1Meta Refresh 1Canonical Link Element 1Word CountText RatioCrawl DepthInlinksUnique InlinksOutlinksUnique OutlinksExternal OutlinksUnique External OutlinksRedirect URI
3https://www.python.org/m/files/f990-2001.pdf200OKNaNNaNNaNNaNNaNNaNNaN00.03110000NaN
4https://www.python.org/ftp/python/3.5.0/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
7https://www.python.org/ftp/python/3.6.1/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
10https://www.python.org/ftp/python/3.4.4/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
13https://www.python.org/ftp/python/2.1.3/Python...200OKNaNNaNNaNNaNNaNNaNNaN00.02330000NaN
14https://www.python.org/ftp/python/3.6.0/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
15https://www.python.org/ftp/python/3.7.0/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
17https://www.python.org/ftp/python/2.7.2/Python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
19https://www.python.org/ftp/python/2.7.13/pytho...200OKNaNNaNNaNNaNNaNNaNNaN00.03110000NaN
22https://www.python.org/ftp/python/3.4.2/python...200OKNaNNaNNaNNaNNaNNaNNaN00.02220000NaN
\n", 953 | "
" 954 | ], 955 | "text/plain": [ 956 | " Address Status Code Status \\\n", 957 | "3 https://www.python.org/m/files/f990-2001.pdf 200 OK \n", 958 | "4 https://www.python.org/ftp/python/3.5.0/python... 200 OK \n", 959 | "7 https://www.python.org/ftp/python/3.6.1/python... 200 OK \n", 960 | "10 https://www.python.org/ftp/python/3.4.4/python... 200 OK \n", 961 | "13 https://www.python.org/ftp/python/2.1.3/Python... 200 OK \n", 962 | "14 https://www.python.org/ftp/python/3.6.0/python... 200 OK \n", 963 | "15 https://www.python.org/ftp/python/3.7.0/python... 200 OK \n", 964 | "17 https://www.python.org/ftp/python/2.7.2/Python... 200 OK \n", 965 | "19 https://www.python.org/ftp/python/2.7.13/pytho... 200 OK \n", 966 | "22 https://www.python.org/ftp/python/3.4.2/python... 200 OK \n", 967 | "\n", 968 | " Title 1 Meta Description 1 H1-1 H1-2 Meta Robots 1 Meta Refresh 1 \\\n", 969 | "3 NaN NaN NaN NaN NaN NaN \n", 970 | "4 NaN NaN NaN NaN NaN NaN \n", 971 | "7 NaN NaN NaN NaN NaN NaN \n", 972 | "10 NaN NaN NaN NaN NaN NaN \n", 973 | "13 NaN NaN NaN NaN NaN NaN \n", 974 | "14 NaN NaN NaN NaN NaN NaN \n", 975 | "15 NaN NaN NaN NaN NaN NaN \n", 976 | "17 NaN NaN NaN NaN NaN NaN \n", 977 | "19 NaN NaN NaN NaN NaN NaN \n", 978 | "22 NaN NaN NaN NaN NaN NaN \n", 979 | "\n", 980 | " Canonical Link Element 1 Word Count Text Ratio Crawl Depth Inlinks \\\n", 981 | "3 NaN 0 0.0 3 1 \n", 982 | "4 NaN 0 0.0 2 2 \n", 983 | "7 NaN 0 0.0 2 2 \n", 984 | "10 NaN 0 0.0 2 2 \n", 985 | "13 NaN 0 0.0 2 3 \n", 986 | "14 NaN 0 0.0 2 2 \n", 987 | "15 NaN 0 0.0 2 2 \n", 988 | "17 NaN 0 0.0 2 2 \n", 989 | "19 NaN 0 0.0 3 1 \n", 990 | "22 NaN 0 0.0 2 2 \n", 991 | "\n", 992 | " Unique Inlinks Outlinks Unique Outlinks External Outlinks \\\n", 993 | "3 1 0 0 0 \n", 994 | "4 2 0 0 0 \n", 995 | "7 2 0 0 0 \n", 996 | "10 2 0 0 0 \n", 997 | "13 3 0 0 0 \n", 998 | "14 2 0 0 0 \n", 999 | "15 2 0 0 0 \n", 1000 | "17 2 0 0 0 \n", 1001 | "19 1 0 0 0 \n", 1002 | "22 2 0 0 0 \n", 1003 | "\n", 1004 | " Unique External Outlinks Redirect URI \n", 1005 | "3 0 NaN \n", 1006 | "4 0 NaN \n", 1007 | "7 0 NaN \n", 1008 | "10 0 NaN \n", 1009 | "13 0 NaN \n", 1010 | "14 0 NaN \n", 1011 | "15 0 NaN \n", 1012 | "17 0 NaN \n", 1013 | "19 0 NaN \n", 1014 | "22 0 NaN " 1015 | ] 1016 | }, 1017 | "execution_count": 9, 1018 | "metadata": {}, 1019 | "output_type": "execute_result" 1020 | } 1021 | ], 1022 | "source": [ 1023 | "urls[(urls[\"Status Code\"] == 200) & (urls[\"Title 1\"].isnull())].head(10)" 1024 | ] 1025 | }, 1026 | { 1027 | "cell_type": "markdown", 1028 | "metadata": {}, 1029 | "source": [ 1030 | "
\n", 1031 | "
\n", 1032 | "\n", 1033 | "## Data enhancement\n", 1034 | "\n", 1035 | "Several Pandas DataFrames can be merged together, which is very helpful when you want to add external data to enhance your analysis.\n", 1036 | "\n", 1037 | "For example, we can use our [categorize script](https://gitlab.com/databulle/categorize) to associate each crawled URL with its category. \n", 1038 | "\n", 1039 | "__Step 1:__ save URLs to a new file." 1040 | ] 1041 | }, 1042 | { 1043 | "cell_type": "code", 1044 | "execution_count": 10, 1045 | "metadata": {}, 1046 | "outputs": [], 1047 | "source": [ 1048 | "# Save URLs to file\n", 1049 | "urls['Address'].to_csv('data/urls.csv', index=None)" 1050 | ] 1051 | }, 1052 | { 1053 | "cell_type": "markdown", 1054 | "metadata": {}, 1055 | "source": [ 1056 | "__Step 2:__ use the script to categorize URLs, and save results as `categorized.csv`. \n", 1057 | "See [our blog](https://www.databulle.com/blog/code/categorize.html) for more details on how to use this script. " 1058 | ] 1059 | }, 1060 | { 1061 | "cell_type": "markdown", 1062 | "metadata": {}, 1063 | "source": [ 1064 | "__Step 3:__ load categorized URLs into our DataFrame. \n", 1065 | "\n", 1066 | "We'll create a new DataFrame (`cats`) in which we'll load our categorized URLs. \n", 1067 | "Then, using the `merge()` function we'll add this newly generated data to our original `urls` DataFrame. \n", 1068 | "`merge()` works a lot like joins in SQL, but you'll find more on that in [the documentation](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html). " 1069 | ] 1070 | }, 1071 | { 1072 | "cell_type": "code", 1073 | "execution_count": 11, 1074 | "metadata": {}, 1075 | "outputs": [ 1076 | { 1077 | "data": { 1078 | "text/html": [ 1079 | "
\n", 1080 | "\n", 1093 | "\n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | "
AddressStatus CodeStatusTitle 1Meta Description 1H1-1H1-2Meta Robots 1Meta Refresh 1Canonical Link Element 1...Text RatioCrawl DepthInlinksUnique InlinksOutlinksUnique OutlinksExternal OutlinksUnique External OutlinksRedirect URICategory
0https://www.python.org/dev/peps/pep-0470301MOVED PERMANENTLYNaNNaNNaNNaNNaNNaNNaN...0.0000003320000https://www.python.org/dev/peps/pep-0470/dev
1https://www.python.org/events/python-user-grou...200OKDjango Girls Ibagué | Python.orgThe official home of the Python Programming La...NaNDjango Girls IbaguéNaNNaNNaN...6.42367522315113453522NaNevents
2https://www.python.org/dev/peps/pep-0471301MOVED PERMANENTLYNaNNaNNaNNaNNaNNaNNaN...0.0000003520000https://www.python.org/dev/peps/pep-0471/dev
3https://www.python.org/m/files/f990-2001.pdf200OKNaNNaNNaNNaNNaNNaNNaN...0.0000003110000NaNfiles
4https://www.python.org/ftp/python/3.5.0/python...200OKNaNNaNNaNNaNNaNNaNNaN...0.0000002220000NaNftp
\n", 1243 | "

5 rows × 21 columns

\n", 1244 | "
" 1245 | ], 1246 | "text/plain": [ 1247 | " Address Status Code \\\n", 1248 | "0 https://www.python.org/dev/peps/pep-0470 301 \n", 1249 | "1 https://www.python.org/events/python-user-grou... 200 \n", 1250 | "2 https://www.python.org/dev/peps/pep-0471 301 \n", 1251 | "3 https://www.python.org/m/files/f990-2001.pdf 200 \n", 1252 | "4 https://www.python.org/ftp/python/3.5.0/python... 200 \n", 1253 | "\n", 1254 | " Status Title 1 \\\n", 1255 | "0 MOVED PERMANENTLY NaN \n", 1256 | "1 OK Django Girls Ibagué | Python.org \n", 1257 | "2 MOVED PERMANENTLY NaN \n", 1258 | "3 OK NaN \n", 1259 | "4 OK NaN \n", 1260 | "\n", 1261 | " Meta Description 1 H1-1 \\\n", 1262 | "0 NaN NaN \n", 1263 | "1 The official home of the Python Programming La... NaN \n", 1264 | "2 NaN NaN \n", 1265 | "3 NaN NaN \n", 1266 | "4 NaN NaN \n", 1267 | "\n", 1268 | " H1-2 Meta Robots 1 Meta Refresh 1 \\\n", 1269 | "0 NaN NaN NaN \n", 1270 | "1 Django Girls Ibagué NaN NaN \n", 1271 | "2 NaN NaN NaN \n", 1272 | "3 NaN NaN NaN \n", 1273 | "4 NaN NaN NaN \n", 1274 | "\n", 1275 | " Canonical Link Element 1 ... Text Ratio Crawl Depth Inlinks \\\n", 1276 | "0 NaN ... 0.000000 3 3 \n", 1277 | "1 NaN ... 6.423675 2 23 \n", 1278 | "2 NaN ... 0.000000 3 5 \n", 1279 | "3 NaN ... 0.000000 3 1 \n", 1280 | "4 NaN ... 0.000000 2 2 \n", 1281 | "\n", 1282 | " Unique Inlinks Outlinks Unique Outlinks External Outlinks \\\n", 1283 | "0 2 0 0 0 \n", 1284 | "1 15 113 45 35 \n", 1285 | "2 2 0 0 0 \n", 1286 | "3 1 0 0 0 \n", 1287 | "4 2 0 0 0 \n", 1288 | "\n", 1289 | " Unique External Outlinks Redirect URI \\\n", 1290 | "0 0 https://www.python.org/dev/peps/pep-0470/ \n", 1291 | "1 22 NaN \n", 1292 | "2 0 https://www.python.org/dev/peps/pep-0471/ \n", 1293 | "3 0 NaN \n", 1294 | "4 0 NaN \n", 1295 | "\n", 1296 | " Category \n", 1297 | "0 dev \n", 1298 | "1 events \n", 1299 | "2 dev \n", 1300 | "3 files \n", 1301 | "4 ftp \n", 1302 | "\n", 1303 | "[5 rows x 21 columns]" 1304 | ] 1305 | }, 1306 | "execution_count": 11, 1307 | "metadata": {}, 1308 | "output_type": "execute_result" 1309 | } 1310 | ], 1311 | "source": [ 1312 | "# Load categorized URLs\n", 1313 | "cats = pd.read_csv('data/categorized.csv')\n", 1314 | "cats.columns = ['Address','Category']\n", 1315 | "# Merge the two DataFrames\n", 1316 | "urls = urls.merge(cats, on='Address', how='left')\n", 1317 | "urls.head()\n", 1318 | "# Check to the right for your new `Category` column." 1319 | ] 1320 | }, 1321 | { 1322 | "cell_type": "markdown", 1323 | "metadata": {}, 1324 | "source": [ 1325 | "Using this new data is very easy. Here are some example charts: " 1326 | ] 1327 | }, 1328 | { 1329 | "cell_type": "code", 1330 | "execution_count": 12, 1331 | "metadata": {}, 1332 | "outputs": [ 1333 | { 1334 | "data": { 1335 | "text/plain": [ 1336 | "" 1337 | ] 1338 | }, 1339 | "execution_count": 12, 1340 | "metadata": {}, 1341 | "output_type": "execute_result" 1342 | }, 1343 | { 1344 | "data": { 1345 | "image/png": "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\n", 1346 | "text/plain": [ 1347 | "" 1348 | ] 1349 | }, 1350 | "metadata": {}, 1351 | "output_type": "display_data" 1352 | } 1353 | ], 1354 | "source": [ 1355 | "# Categories pie chart\n", 1356 | "urls.groupby('Category')['Category'].count().plot(kind=\"pie\", figsize=(8,8), title='Categories')" 1357 | ] 1358 | }, 1359 | { 1360 | "cell_type": "code", 1361 | "execution_count": 13, 1362 | "metadata": {}, 1363 | "outputs": [ 1364 | { 1365 | "data": { 1366 | "text/plain": [ 1367 | "" 1368 | ] 1369 | }, 1370 | "execution_count": 13, 1371 | "metadata": {}, 1372 | "output_type": "execute_result" 1373 | }, 1374 | { 1375 | "data": { 1376 | "image/png": "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e7suAOet9D4pzeAsInKt0N02RESujCbA50A1YAeFq7x7vVtSIee2kgvdgUNERIrRtg0RERERERdp24aIiIiIiIsUnkVEREREXHRV73muWbOmbdiwobfLEBEREZFrXEZGxkFrba2S+l3V4blhw4akp6d7uwwRERERucYZY3a60k/bNkREREREXKTwLCIiIiLiIoVnEREREREXXdV7ns/nzJkz7Nmzh9zcXG+XIm6oXLkyt956KxUqVPB2KSIiIiKXrMyF5z179lC9enUaNmyIMcbb5cglsNZy6NAh9uzZQ6NGjbxdjoiIiMglK3PbNnJzc7n55psVnMsgYww333yz/l8DERERKbPKXHgGFJzLML13IiIiUpaVyfB8tfjll194+OGHuf322wkPD6dLly5s3br1vH2PHj3KBx98cIUrFBERERFPUnh2k7WWuLg42rVrx/bt28nIyOCdd95h37595+1/pcJzXl5eqV9DRERE5Hql8OymlStXUqFCBRITE4vaQkJCaN68OXfffTdhYWEEBQUxb948AIYOHcr27dsJDQ1lyJAhAIwePZrIyEiCg4N5/fXXi8Z58803adKkCa1bt+aRRx5hzJgxADgcDqKjowkODiYuLo4jR44A0K5dO55//nkiIiIYMWIEjRo14syZMwD8+uuv5zwXEREREfeVubttXC02btxIeHj4H9orV67MnDlzuOGGGzh48CDR0dHExsYycuRINm7ciMPhAGDJkiVs27aNtWvXYq0lNjaWlJQUqlSpwhdffEFmZiZnzpwhLCys6Dp9+vRh/PjxxMTEMGzYMIYPH877778PwOnTp4t+yjw7O5svv/yS7t27M3PmTHr06KFbw4mIiIh4gMKzh1lreeWVV0hJSaFcuXL89NNP593KsWTJEpYsWULz5s0BOH78ONu2bSMnJ4du3bpRuXJlKleuzAMPPADAsWPHOHr0KDExMQAkJCTQq1evovHi4+OLHj/55JO8++67dO/encmTJ/PRRx+V5pRFRERErhsKz25q1qwZs2fP/kP7jBkzOHDgABkZGVSoUIGGDRue99Zs1lpefvllnn766XPaz64kX6pq1aoVPW7VqhXZ2dmsWrWK/Px8AgMD3RpTRERERM6lPc9u6tChA7/99hsffvhhUdv69evZuXMntWvXpkKFCqxcuZKdO3cCUL16dXJycor63nfffUyaNInjx48D8NNPP7F//35atWrFggULyM3N5fjx4yxcuBCAGjVq4OfnR2pqKgDTpk0rWoU+nz59+vDoo4/Sr18/j89dRERE5HqllWc3GWOYM2cOzz//PKNGjaJy5co0bNiQpKQknn32WYKCgoiIiODOO+8E4Oabb6ZVq1YEBgbSuXNnRo8eTVZWFnfddRcAvr6+TJ8+ncjISGJjYwkODqZOnToEBQVRo0YNAKZOnUpiYiInT57E39+fyZMnX7C+3r1789prr/HII4+U/oshIiIicp0w1lpv13BBERER9uyX4M7KysoiICDASxVdGcePH8fX15eTJ0/Stm1bPvzwQ8LCwi5pjNmzZzNv3jymTZtWSlW673p4D0VERKRsMcZkWGsjSuqnleerUP/+/fn+++/Jzc0lISHhkoPz4MGD+d///V8WLVpUShWKiIhc2/4W39XbJVwz/pq80NsleJTC81Xo008/vazzx48f76FKRERERKQ4fWFQRERERMRFCs8iIiIiIi5SeBYRERERcZH2PIuIiIj8TmW/v3i7BLlKaeXZg3x9fT0yjsPh0J0yRERERK5CZX7lueHQLz06XvbI+z06njscDgfp6el06dLF26WIiIiISDFlPjx7S/fu3dm9eze5ubk899xz9O/fH4AXXniBJUuWULduXWbOnEmtWrVwOBxFvwx4++23M2nSJPz8/GjXrh1jxowhIiKCgwcPEhERwdatWxk2bBinTp0iLS2Nl19+mfj4eC/PVkRE5PrSYdVAb5dwDcnydgEepW0bbpo0aRIZGRmkp6czbtw4Dh06xIkTJ4iIiGDTpk3ExMQwfPhwAPr06cOoUaNYv349QUFBRe3nU7FiRd544w3i4+NxOBwKziIiIiJXEYVnN40bN46QkBCio6PZvXs327Zto1y5ckVh97HHHiMtLY1jx45x9OhRYmJiAEhISCAlJcWbpYuIiIiIm7Rtww2rVq1i2bJlrFmzhqpVq9KuXTtyc3P/0M8Yc9FxypcvT0FBAcB5zxcRERGRq4tWnt1w7Ngx/Pz8qFq1Kps3b+brr78GoKCggNmzZwOFP7HdunVratSogZ+fH6mpqQBMmzataBW6YcOGZGRkABSdB1C9enVycnKu5JRERERExAUKz27o1KkTeXl5BAQEMHToUKKjowGoVq0aa9euJTAwkBUrVjBs2DAApk6dypAhQwgODsbhcBS1v/jii/zzn/+kefPmHDx4sGj89u3b8/333xMaGkpycvKVn6CIiIiInJex1nq7hguKiIiw6enp57RlZWUREBDgpYrEE/QeiojI1S7rTv3vlKcEbC4bd9swxmRYayNK6qeVZxERERERFyk8i4iIiIi4SOFZRERERMRFCs8iIiIiIi5SeBYRERERcZHCs4iIiIiIixSey7js7Gw+/fRTb5chIiIicl0o+z/PnVTDw+Md8+x4pexseH700Ue9XYqIiIjINa/sh2cv6d69O7t37yY3N5fnnnuO/v37s3jxYl555RXy8/OpWbMmy5cv5/jx4wwePJj09HSMMbz++us8+OCDfPbZZ7z99ttYa7n//vsZNWoUAL6+vhw/fhwo/MnuhQsXMmXKFPr27csNN9xAeno6v/zyC++++y49e/Zk6NChZGVlERoaSkJCAh07dqRfv36cPn2agoICvvjiCxo3buzNl0pERKTMeehlRSRP2eDtAjxMnww3TZo0iZtuuolTp04RGRlJt27deOqpp0hJSaFRo0YcPnwYgDfffJMaNWqwYUPhR+fIkSP8/PPPvPTSS2RkZODn50fHjh2ZO3cu3bt3v+g19+7dS1paGps3byY2NpaePXsycuRIxowZw8KFCwEYPHgwzz33HL179+b06dPk5+eX7gshIiIich3Rnmc3jRs3jpCQEKKjo9m9ezcffvghbdu2pVGjRgDcdNNNACxbtoyBAwcWnefn58e6deto164dtWrVonz58vTu3ZuUlJQSr9m9e3fKlStH06ZN2bdv33n73HXXXbz99tuMGjWKnTt3UqVKFQ/MVkRERERA4dktq1atYtmyZaxZs4bMzEyaN29OaGioR8Y2xhQ9zs3NPedYpUqVih5ba897/qOPPsr8+fOpUqUKXbp0YcWKFR6pS0REREQUnt1y7Ngx/Pz8qFq1Kps3b+brr78mNzeXlJQUfvzxR4CibRv33nsvEyZMKDr3yJEjREVF8Z///IeDBw+Sn5/PZ599RkxMDAB16tQhKyuLgoIC5syZU2It1atXJycnp+j5jh078Pf359lnn6Vbt26sX7/ek1MXERERua4pPLuhU6dO5OXlERAQwNChQ4mOjqZWrVp8+OGH9OjRg5CQEOLj4wF47bXXOHLkCIGBgYSEhLBy5Urq1avHyJEjad++PSEhIYSH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c1JXSps2bUhOTiY/P58DBw6QkpJCVFQUULht48cff6SgoIDk5GRat27NwYMHKSgo4MEHH+Stt97i22+/9fIMRERERORSuLvn+bpnjCEuLo41a9YQEhKCMYZ3332XunXrsnnzZiIjIxk0aBA//PAD7du3Jy4ujg0bNtCvXz8KCgoAeOedd7w8CxERERG5FGU+PLt6azlPOnToEDfddBPGGEaPHs3o0aPPOd6uXTtSUlL+cF5ISIhWm0VERETKsMu+Vd315ueff+auu+7ixRdf9HYpIiIiInKFlfmV5yutfv36bN261dtliIiIiIgXaOVZRERERMRFCs8iIiIiIi5SeBYRERERcZHCs4iIiIiIixSePeTo0aN88MEHRc9XrVpF165dvViRiIiIiHhamb/bxoTEFR4db+DEDm6ddzY8DxgwwCN15OXlUb58mX97RERERK4pWnl203vvvUdgYCCBgYG8//77DB06lO3btxMaGsqQIUMAOH78OD179uTOO++kd+/eWGsByMjIICYmhvDwcO677z727t0LFP64yvPPP09ERAR///vfvTY3ERERETk/LW26ISMjg8mTJ/PNN99graVFixZMnz6djRs34nA4gMJtG9999x2bNm2ifv36tGrViq+++ooWLVowePBg5s2bR61atUhOTubVV19l0qRJAJw+fZr09HRvTk9ERERELkDh2Q1paWnExcVRrVo1AHr06EFqauof+kVFRXHrrbcCEBoaSnZ2NjfeeCMbN27k3nvvBSA/P5969eoVnRMfH38FZiAiIiIi7lB4LkWVKlUqeuzj40NeXh7WWpo1a8aaNWvOe87ZQC4iIiIiVx/teXZDmzZtmDt3LidPnuTEiRPMmTOHVq1akZOTU+K5TZo04cCBA0Xh+cyZM2zatKm0SxYRERERD9DKsxvCwsLo27cvUVFRADz55JOEh4fTqlUrAgMD6dy5M/fff/95z61YsSKzZ8/m2Wef5dixY+Tl5fH888/TrFmzKzkFEREREXGDOXsHiKtRRESE/f2X57KysggICPBSReIJeg9FBKDuSoe3S7im/NI+1NslXFP0+fScsvLZNMZkWGsjSuqnbRsiIiIiIi5SeBYRERERcZHCs4iIiIiIixSeRURERERcpPAsIiIiIuIihWcRERERERcpPF+H3n77bbfO69KlC0ePHvVwNSIiIiJl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\n", 1377 | "text/plain": [ 1378 | "" 1379 | ] 1380 | }, 1381 | "metadata": {}, 1382 | "output_type": "display_data" 1383 | } 1384 | ], 1385 | "source": [ 1386 | "# Categories / Depth\n", 1387 | "urls.groupby([\"Crawl Depth\",\"Category\"])['Address'].count().unstack().plot(kind=\"bar\", figsize=(12,7), title='Categories / Depth', stacked=True)" 1388 | ] 1389 | }, 1390 | { 1391 | "cell_type": "code", 1392 | "execution_count": 14, 1393 | "metadata": {}, 1394 | "outputs": [ 1395 | { 1396 | "data": { 1397 | "text/plain": [ 1398 | "" 1399 | ] 1400 | }, 1401 | "execution_count": 14, 1402 | "metadata": {}, 1403 | "output_type": "execute_result" 1404 | }, 1405 | { 1406 | "data": { 1407 | "image/png": "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\n", 1408 | "text/plain": [ 1409 | "" 1410 | ] 1411 | }, 1412 | "metadata": {}, 1413 | "output_type": "display_data" 1414 | } 1415 | ], 1416 | "source": [ 1417 | "# Outlinks per category\n", 1418 | "urls.groupby(\"Category\")[\"Outlinks\"].sum().plot(kind=\"barh\", figsize=(12,7), title=\"Outlinks per category\")" 1419 | ] 1420 | }, 1421 | { 1422 | "cell_type": "code", 1423 | "execution_count": 15, 1424 | "metadata": {}, 1425 | "outputs": [ 1426 | { 1427 | "data": { 1428 | "text/plain": [ 1429 | "" 1430 | ] 1431 | }, 1432 | "execution_count": 15, 1433 | "metadata": {}, 1434 | "output_type": "execute_result" 1435 | }, 1436 | { 1437 | "data": { 1438 | "image/png": "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\n", 1439 | "text/plain": [ 1440 | "" 1441 | ] 1442 | }, 1443 | "metadata": {}, 1444 | "output_type": "display_data" 1445 | } 1446 | ], 1447 | "source": [ 1448 | "# Words per category\n", 1449 | "urls.groupby(\"Category\")[\"Word Count\"].mean().plot(kind=\"barh\", figsize=(12,7), title=\"Words per category\")" 1450 | ] 1451 | }, 1452 | { 1453 | "cell_type": "markdown", 1454 | "metadata": {}, 1455 | "source": [ 1456 | "You could also try some more complex merging. For instance, this finds all links to 301 redirects and adds redirect URL to the table:" 1457 | ] 1458 | }, 1459 | { 1460 | "cell_type": "code", 1461 | "execution_count": 16, 1462 | "metadata": {}, 1463 | "outputs": [ 1464 | { 1465 | "data": { 1466 | "text/html": [ 1467 | "
\n", 1468 | "\n", 1481 | "\n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | " \n", 1508 | " \n", 1509 | " \n", 1510 | " \n", 1511 | " \n", 1512 | " \n", 1513 | " \n", 1514 | " \n", 1515 | " \n", 1516 | " \n", 1517 | " \n", 1518 | " \n", 1519 | " \n", 1520 | " \n", 1521 | " \n", 1522 | " \n", 1523 | " \n", 1524 | " \n", 1525 | " \n", 1526 | " \n", 1527 | " \n", 1528 | " \n", 1529 | " \n", 1530 | " \n", 1531 | " \n", 1532 | " \n", 1533 | " \n", 1534 | "
TypeSourceDestinationStatus CodeRedirect URI
0AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/download/alternatives301.0https://www.python.org/download/alternatives/
1AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/doc/av301.0https://www.python.org/doc/av/
2AHREFhttps://www.python.org/events/python-user-grou...http://python.org/dev/peps/301.0https://python.org/dev/peps/
3AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/community/awards301.0https://www.python.org/community/awards/
4AHREFhttps://www.python.org/events/python-user-grou...https://www.python.org/download/alternatives301.0https://www.python.org/download/alternatives/
\n", 1535 | "
" 1536 | ], 1537 | "text/plain": [ 1538 | " Type Source \\\n", 1539 | "0 AHREF https://www.python.org/events/python-user-grou... \n", 1540 | "1 AHREF https://www.python.org/events/python-user-grou... \n", 1541 | "2 AHREF https://www.python.org/events/python-user-grou... \n", 1542 | "3 AHREF https://www.python.org/events/python-user-grou... \n", 1543 | "4 AHREF https://www.python.org/events/python-user-grou... \n", 1544 | "\n", 1545 | " Destination Status Code \\\n", 1546 | "0 https://www.python.org/download/alternatives 301.0 \n", 1547 | "1 https://www.python.org/doc/av 301.0 \n", 1548 | "2 http://python.org/dev/peps/ 301.0 \n", 1549 | "3 https://www.python.org/community/awards 301.0 \n", 1550 | "4 https://www.python.org/download/alternatives 301.0 \n", 1551 | "\n", 1552 | " Redirect URI \n", 1553 | "0 https://www.python.org/download/alternatives/ \n", 1554 | "1 https://www.python.org/doc/av/ \n", 1555 | "2 https://python.org/dev/peps/ \n", 1556 | "3 https://www.python.org/community/awards/ \n", 1557 | "4 https://www.python.org/download/alternatives/ " 1558 | ] 1559 | }, 1560 | "execution_count": 16, 1561 | "metadata": {}, 1562 | "output_type": "execute_result" 1563 | } 1564 | ], 1565 | "source": [ 1566 | "# Create a new DataFrame with 301 links\n", 1567 | "redirs = links[links[\"Status Code\"] == 301]\n", 1568 | "# Merge with `urls` to get Redirect URI\n", 1569 | "redirs = redirs.merge(urls[urls[\"Status Code\"] == 301][[\"Address\",\"Redirect URI\"]], how=\"left\", left_on=\"Destination\", right_on=\"Address\")\n", 1570 | "# Drop Address column\n", 1571 | "redirs = redirs.drop(\"Address\", axis=1)\n", 1572 | "# Show first 10 rows\n", 1573 | "redirs.head()" 1574 | ] 1575 | }, 1576 | { 1577 | "cell_type": "markdown", 1578 | "metadata": {}, 1579 | "source": [ 1580 | "## What now ?\n", 1581 | "\n", 1582 | "Those were just a few basic examples of what you can do with a few lines of code. \n", 1583 | "You could add data from APIs, try some Machine Learning libs, calculate internal PageRank... It's up to you now! " 1584 | ] 1585 | } 1586 | ], 1587 | "metadata": { 1588 | "kernelspec": { 1589 | "display_name": "Python 3", 1590 | "language": "python", 1591 | "name": "python3" 1592 | }, 1593 | "language_info": { 1594 | "codemirror_mode": { 1595 | "name": "ipython", 1596 | "version": 3 1597 | }, 1598 | "file_extension": ".py", 1599 | "mimetype": "text/x-python", 1600 | "name": "python", 1601 | "nbconvert_exporter": "python", 1602 | "pygments_lexer": "ipython3", 1603 | "version": "3.5.1" 1604 | } 1605 | }, 1606 | "nbformat": 4, 1607 | "nbformat_minor": 2 1608 | } 1609 | -------------------------------------------------------------------------------- /output/404-links.csv: -------------------------------------------------------------------------------- 1 | ,Type,Source,Destination,Status Code 2 | 6065,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/NEWS.txt,404.0 3 | 6068,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/doc/2.5/whatsnew/whatsnew25.html,404.0 4 | 6082,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/NEWS.txt,404.0 5 | 6085,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/md5sum.py,404.0 6 | 6087,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/Python-2.5.1.tgz.asc,404.0 7 | 6089,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/Python-2.5.1.tar.bz2.asc,404.0 8 | 6091,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/python-2.5.1.msi.asc,404.0 9 | 6093,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/python-2.5.1.amd64.msi.asc,404.0 10 | 6095,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/python-2.5.1.ia64.msi.asc,404.0 11 | 6097,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/python-2.5.1-macosx.dmg.asc,404.0 12 | 6099,AHREF,https://www.python.org/download/releases/2.5.1/,https://www.python.org/download/releases/2.5.1/Python25.chm.asc,404.0 13 | 10011,AHREF,https://www.python.org/download/releases/2.5.5/,https://www.python.org/download/releases/2.5.5/NEWS.txt,404.0 14 | 10018,AHREF,https://www.python.org/download/releases/2.5.5/,https://www.python.org/download/releases/2.5.5/NEWS.txt,404.0 15 | 10020,AHREF,https://www.python.org/download/releases/2.5.5/,https://www.python.org/download/releases/2.5.4/md5sum.py,404.0 16 | 10022,AHREF,https://www.python.org/download/releases/2.5.5/,https://www.python.org/download/releases/2.5.5/Python-2.5.5.tgz.asc,404.0 17 | 10024,AHREF,https://www.python.org/download/releases/2.5.5/,https://www.python.org/download/releases/2.5.5/Python-2.5.5.tar.bz2.asc,404.0 18 | 11298,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/NEWS.txt,404.0 19 | 11301,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/doc/2.5/whatsnew/whatsnew25.html,404.0 20 | 11315,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/NEWS.txt,404.0 21 | 11317,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/md5sum.py,404.0 22 | 11319,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/Python-2.5.4.tgz.asc,404.0 23 | 11321,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/Python-2.5.4.tar.bz2.asc,404.0 24 | 11323,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/python-2.5.4.msi.asc,404.0 25 | 11325,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/python-2.5.4.amd64.msi.asc,404.0 26 | 11327,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/python-2.5.4.ia64.msi.asc,404.0 27 | 11329,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/python-2.5.4-macosx.dmg.asc,404.0 28 | 11331,AHREF,https://www.python.org/download/releases/2.5.4/,https://www.python.org/download/releases/2.5.4/Python25.chm.asc,404.0 29 | 12545,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/NEWS.txt,404.0 30 | 12548,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/doc/2.5/whatsnew/whatsnew25.html,404.0 31 | 12562,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/NEWS.txt,404.0 32 | 12564,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/md5sum.py,404.0 33 | 12566,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/Python-2.5.3.tgz.asc,404.0 34 | 12568,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/Python-2.5.3.tar.bz2.asc,404.0 35 | 12570,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/python-2.5.3.msi.asc,404.0 36 | 12572,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/python-2.5.3.amd64.msi.asc,404.0 37 | 12574,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/python-2.5.3.ia64.msi.asc,404.0 38 | 12576,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/python-2.5.3-macosx.dmg.asc,404.0 39 | 12578,AHREF,https://www.python.org/download/releases/2.5.3/,https://www.python.org/download/releases/2.5.3/Python25.chm.asc,404.0 40 | 13576,AHREF,https://www.python.org/downloads/release/python-278/,https://www.python.org/ftp/python/2.7.8/python-2.7.8-pdb.zip.asc,404.0 41 | 13578,AHREF,https://www.python.org/downloads/release/python-278/,https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64-pdb.zip.asc,404.0 42 | 13580,AHREF,https://www.python.org/downloads/release/python-278/,https://www.python.org/ftp/python/2.7.8/python278.chm.asc,404.0 43 | 13582,AHREF,https://www.python.org/downloads/release/python-278/,https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi.asc,404.0 44 | 13584,AHREF,https://www.python.org/downloads/release/python-278/,https://www.python.org/ftp/python/2.7.8/python-2.7.8.msi.asc,404.0 45 | 13749,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/NEWS.txt,404.0 46 | 13752,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/doc/2.5/whatsnew/whatsnew25.html,404.0 47 | 13766,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/NEWS.txt,404.0 48 | 13769,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/md5sum.py,404.0 49 | 13771,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/Python-2.5.2.tgz.asc,404.0 50 | 13773,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/Python-2.5.2.tar.bz2.asc,404.0 51 | 13775,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/python-2.5.2.msi.asc,404.0 52 | 13777,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/python-2.5.2.amd64.msi.asc,404.0 53 | 13779,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/python-2.5.2.ia64.msi.asc,404.0 54 | 13781,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/python-2.5.2-macosx.dmg.asc,404.0 55 | 13783,AHREF,https://www.python.org/download/releases/2.5.2/,https://www.python.org/download/releases/2.5.2/Python25.chm.asc,404.0 56 | 23557,AHREF,https://www.python.org/downloads/,https://www.python.org/~anthony/anthonypub.asc,404.0 57 | 23558,AHREF,https://www.python.org/downloads/,https://www.python.org/~gbrandl/gbrandlpub.asc,404.0 58 | 23559,AHREF,https://www.python.org/downloads/,https://www.python.org/~nad/nadAA65421D.asc,404.0 59 | 23560,AHREF,https://www.python.org/downloads/,https://www.python.org/~nad/nadpub.asc,404.0 60 | 23561,AHREF,https://www.python.org/downloads/,https://www.python.org/~larry/larrygpg.asc,404.0 61 | 23562,AHREF,https://www.python.org/downloads/,https://www.python.org/~peterson/pubkey.asc,404.0 62 | 32560,AHREF,https://www.python.org/download/releases/2.2.2/,https://www.python.org/download/releases/2.2.2/NEWS.txt,404.0 63 | 32562,AHREF,https://www.python.org/download/releases/2.2.2/,https://www.python.org/doc/2.2.2/whatsnew/,404.0 64 | 32564,AHREF,https://www.python.org/download/releases/2.2.2/,https://www.python.org/doc/2.2.2,404.0 65 | 32566,AHREF,https://www.python.org/download/releases/2.2.2/,https://www.python.org/download/releases/2.2.2/md5sum.py,404.0 66 | 33377,AHREF,https://www.python.org/download/releases/2.2.1/,https://www.python.org/download/releases/2.2.1/NEWS,404.0 67 | 33379,AHREF,https://www.python.org/download/releases/2.2.1/,https://www.python.org/doc/2.2.1/whatsnew/,404.0 68 | 33381,AHREF,https://www.python.org/download/releases/2.2.1/,https://www.python.org/doc/2.2.1/,404.0 69 | 33383,AHREF,https://www.python.org/download/releases/2.2.1/,https://www.python.org/download/releases/2.2.1/md5sum.py,404.0 70 | 36787,AHREF,https://www.python.org/download/releases/2.2.3/,https://www.python.org/download/releases/2.2.3/NEWS.txt,404.0 71 | 36789,AHREF,https://www.python.org/download/releases/2.2.3/,https://www.python.org/doc/2.2.3/whatsnew/,404.0 72 | 36791,AHREF,https://www.python.org/download/releases/2.2.3/,https://www.python.org/doc/2.2.3,404.0 73 | 36793,AHREF,https://www.python.org/download/releases/2.2.3/,https://www.python.org/download/releases/2.2.3/md5sum.py,404.0 74 | 45338,AHREF,https://www.python.org/download/releases/2.5.6/,https://www.python.org/download/releases/2.5.6/download/releases/2.5.4/,404.0 75 | 45341,AHREF,https://www.python.org/download/releases/2.5.6/,https://www.python.org/download/releases/2.5.6/NEWS.txt,404.0 76 | 45348,AHREF,https://www.python.org/download/releases/2.5.6/,https://www.python.org/download/releases/2.5.6/NEWS.txt,404.0 77 | 45350,AHREF,https://www.python.org/download/releases/2.5.6/,https://www.python.org/download/releases/2.5.4/md5sum.py,404.0 78 | 57799,REDIRECT,http://www.python.org/doc/2.5/whatsnew/whatsnew25.html,https://www.python.org/doc/2.5/whatsnew/whatsnew25.html,404.0 79 | 76589,AHREF,https://www.python.org/downloads/windows/,https://www.python.org/ftp/python/3.2.5/python324.chm,404.0 80 | 76609,AHREF,https://www.python.org/downloads/windows/,https://www.python.org/ftp/python/3.2.4/python324.chm,404.0 81 | 76634,AHREF,https://www.python.org/downloads/windows/,https://www.python.org/ftp/python/3.2.2/python322.chm,404.0 82 | 84146,AHREF,https://www.python.org/downloads/source,https://www.python.org/~anthony/anthonypub.asc,404.0 83 | 84147,AHREF,https://www.python.org/downloads/source,https://www.python.org/~gbrandl/gbrandlpub.asc,404.0 84 | 84148,AHREF,https://www.python.org/downloads/source,https://www.python.org/~nad/nadAA65421D.asc,404.0 85 | 84149,AHREF,https://www.python.org/downloads/source,https://www.python.org/~nad/nadpub.asc,404.0 86 | 84150,AHREF,https://www.python.org/downloads/source,https://www.python.org/~larry/larrygpg.asc,404.0 87 | 84151,AHREF,https://www.python.org/downloads/source,https://www.python.org/~peterson/pubkey.asc,404.0 88 | 86830,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~anthony/anthonypub.asc,404.0 89 | 86831,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~gbrandl/gbrandlpub.asc,404.0 90 | 86832,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~nad/nadAA65421D.asc,404.0 91 | 86833,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~nad/nadpub.asc,404.0 92 | 86834,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~larry/larrygpg.asc,404.0 93 | 86835,AHREF,https://www.python.org/downloads/release/python-315/license,https://www.python.org/~peterson/pubkey.asc,404.0 94 | 88927,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/meta-vladimir.txt,404.0 95 | 88931,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Enum.py,404.0 96 | 88932,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Trace.py,404.0 97 | 88933,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Meta.py,404.0 98 | 88934,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Eiffel.py,404.0 99 | 88935,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Synch.py,404.0 100 | 88936,AHREF,https://www.python.org/doc/essays/metaclasses/,https://www.python.org/doc/essays/metaclasses/Simple.py,404.0 101 | 90985,AHREF,https://www.python.org/success-stories/test-success-story/,https://www.python.org/files/success/rackspace/datacenter.jpg,404.0 102 | 98563,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/2.4/index.html,404.0 103 | 98564,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/2.4/highlights.html,404.0 104 | 98565,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/doc/2.4/whatsnew/whatsnew24.html,404.0 105 | 98569,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/2.4/msi.html,404.0 106 | 98574,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/2.4/highlights.html,404.0 107 | 98575,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/doc/2.4/whatsnew/whatsnew24.html,404.0 108 | 98576,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/2.3/,404.0 109 | 98577,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/NEWS.html,404.0 110 | 98578,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/doc/2.4.1/,404.0 111 | 98580,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/md5sum.py,404.0 112 | 98582,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/Python-2.4.1.tgz.asc,404.0 113 | 98584,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/Python-2.4.1.tar.bz2.asc,404.0 114 | 98586,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/python-2.4.1.msi.asc,404.0 115 | 98588,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/python-2.4.1.ia64.msi.asc,404.0 116 | 98590,AHREF,https://www.python.org/download/releases/2.4.1/,https://www.python.org/download/releases/2.4.1/MacPython-OSX-2.4.1-1.dmg.asc,404.0 117 | 101976,AHREF,https://www.python.org/download/releases/2.4.6/,https://www.python.org/download/releases/2.4.6/NEWS.txt,404.0 118 | 101987,AHREF,https://www.python.org/download/releases/2.4.6/,https://www.python.org/download/releases/2.4.6/NEWS.txt,404.0 119 | 101991,AHREF,https://www.python.org/download/releases/2.4.6/,https://www.python.org/download/releases/2.4.6/md5sum.py,404.0 120 | 101993,AHREF,https://www.python.org/download/releases/2.4.6/,https://www.python.org/download/releases/2.4.6/Python-2.4.6.tgz.asc,404.0 121 | 101995,AHREF,https://www.python.org/download/releases/2.4.6/,https://www.python.org/download/releases/2.4.6/Python-2.4.6.tar.bz2.asc,404.0 122 | 102937,AHREF,https://www.python.org/download/releases/2.4.5/,https://www.python.org/download/releases/2.4.5/NEWS.txt,404.0 123 | 102948,AHREF,https://www.python.org/download/releases/2.4.5/,https://www.python.org/download/releases/2.4.5/NEWS.txt,404.0 124 | 102952,AHREF,https://www.python.org/download/releases/2.4.5/,https://www.python.org/download/releases/2.4.5/md5sum.py,404.0 125 | 102954,AHREF,https://www.python.org/download/releases/2.4.5/,https://www.python.org/download/releases/2.4.5/Python-2.4.5.tgz.asc,404.0 126 | 102956,AHREF,https://www.python.org/download/releases/2.4.5/,https://www.python.org/download/releases/2.4.5/Python-2.4.5.tar.bz2.asc,404.0 127 | 105521,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/Python-2.7.2.tgz.asc,404.0 128 | 105523,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/Python-2.7.2.tar.bz2.asc,404.0 129 | 105525,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/Python-2.7.2.tar.xz.asc,404.0 130 | 105527,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2.msi.asc,404.0 131 | 105529,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2-pdb.zip.asc,404.0 132 | 105532,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2.amd64.msi.asc,404.0 133 | 105535,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2.amd64-pdb.zip.asc,404.0 134 | 105538,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2-macosx10.6.dmg.asc,404.0 135 | 105541,AHREF,https://www.python.org/download/releases/2.7.2/,https://www.python.org/download/releases/2.7.2/python-2.7.2-macosx10.3.dmg.asc,404.0 136 | 106543,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/Python-2.7.1.tgz.asc,404.0 137 | 106545,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/Python-2.7.1.tar.bz2.asc,404.0 138 | 106547,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1.msi.asc,404.0 139 | 106549,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1-pdb.zip.asc,404.0 140 | 106552,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1.amd64.msi.asc,404.0 141 | 106555,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1.amd64-pdb.zip.asc,404.0 142 | 106558,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1-macosx10.3.dmg.asc,404.0 143 | 106561,AHREF,https://www.python.org/download/releases/2.7.1/,https://www.python.org/download/releases/2.7.1/python-2.7.1-macosx10.6.dmg.asc,404.0 144 | 110878,AHREF,https://www.python.org/download/releases/3.1.2/,https://www.python.org/ftp/python/3.1.2/python-3.1.2.sig,404.0 145 | 112546,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/download/releases/2.2/md5sum.py,404.0 146 | 112550,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0252.html,404.0 147 | 112551,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0253.html,404.0 148 | 112553,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0234.html,404.0 149 | 112554,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0255.html,404.0 150 | 112555,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0238.html,404.0 151 | 112556,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/dev/peps/pep-0237.html,404.0 152 | 112558,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/doc/2.2.3/whatsnew/whatsnew22.html,404.0 153 | 112560,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/download/releases/2.2/NEWS.txt,404.0 154 | 112561,AHREF,https://www.python.org/download/releases/2.2/,https://www.python.org/doc/2.2/,404.0 155 | 114556,AHREF,https://www.python.org/download/releases/2.4/,https://www.python.org/doc/2.4/whatsnew/whatsnew24.html,404.0 156 | 114566,AHREF,https://www.python.org/download/releases/2.4/,https://www.python.org/doc/2.4/whatsnew/whatsnew24.html,404.0 157 | 114907,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/doc/2.3/whatsnew/,404.0 158 | 114909,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/download/releases/2.3/NEWS.txt,404.0 159 | 114911,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/doc/2.3/,404.0 160 | 114915,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 161 | 114916,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/download/releases/2.3/md5sum.py,404.0 162 | 114918,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/download/releases/2.3/Python-2.3.tgz.asc,404.0 163 | 114920,AHREF,https://www.python.org/download/releases/2.3/,https://www.python.org/download/releases/2.3/Python-2.3.exe.asc,404.0 164 | 115539,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/NEWS.txt,404.0 165 | 115543,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/Python-2.6.tgz.asc,404.0 166 | 115545,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/Python-2.6.tar.bz2.asc,404.0 167 | 115547,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/python-2.6.msi.asc,404.0 168 | 115550,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/python-2.6.amd64.msi.asc,404.0 169 | 115552,AHREF,https://www.python.org/download/releases/2.6/,https://www.python.org/download/releases/2.6/python-2.6-macosx2008-10-01.dmg.asc,404.0 170 | 115718,AHREF,https://www.python.org/about/success/projectpipe/,https://www.python.org/about/success/projectpipe/projectPipeArchitecture.png,404.0 171 | 115915,AHREF,https://www.python.org/download/releases/2.5/,https://www.python.org/download/releases/2.5/NEWS.txt,404.0 172 | 115916,AHREF,https://www.python.org/download/releases/2.5/,https://www.python.org/download/releases/2.5/IDLENEWS.txt,404.0 173 | 115920,AHREF,https://www.python.org/download/releases/2.5/,https://www.python.org/download/releases/2.5/md5sum.py,404.0 174 | 121787,AHREF,https://www.python.org/download/releases/2.1.3/,https://www.python.org/download/releases/2.1.3/NEWS.txt,404.0 175 | 121792,AHREF,https://www.python.org/download/releases/2.1.3/,https://www.python.org/download/releases/2.1.2/md5sum.py,404.0 176 | 121796,AHREF,https://www.python.org/download/releases/2.1.3/,https://www.python.org/doc/2.1.3/,404.0 177 | 136686,AHREF,https://www.python.org/download/releases/3.0.1/,https://www.python.org/download/releases/3.0.1/NEWS.txt,404.0 178 | 151134,AHREF,https://www.python.org/doc/essays/cp4e/,https://www.python.org/doc/essays/sigs/edu-sig/,404.0 179 | 151135,AHREF,https://www.python.org/doc/essays/cp4e/,https://www.python.org/doc/essays/sigs/edu-sig/,404.0 180 | 155394,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/NEWS.txt,404.0 181 | 155399,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/Python-2.6.2.tgz.asc,404.0 182 | 155401,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/Python-2.6.2.tar.bz2.asc,404.0 183 | 155403,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/python-2.6.2.msi.asc,404.0 184 | 155406,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/python-2.6.2.amd64.msi.asc,404.0 185 | 155408,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/python-2.6.2-macosx2009-04-16.dmg.sig,404.0 186 | 155410,AHREF,https://www.python.org/download/releases/2.6.2/,https://www.python.org/download/releases/2.6.2/python262.chm.asc,404.0 187 | 156524,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/NEWS.txt,404.0 188 | 156525,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/NEWS.txt,404.0 189 | 156529,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/Python-2.6.1.tgz.asc,404.0 190 | 156531,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/Python-2.6.1.tar.bz2.asc,404.0 191 | 156533,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/python-2.6.1.msi.asc,404.0 192 | 156536,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/python-2.6.1.amd64.msi.asc,404.0 193 | 156538,AHREF,https://www.python.org/download/releases/2.6.1/,https://www.python.org/download/releases/2.6.1/python-2.6.1-macosx2008-12-06.dmg.asc,404.0 194 | 167039,AHREF,https://www.python.org/dev/peps/pep-0545/,https://www.python.org/psf/contrib/doc-contrib-form/,404.0 195 | 169310,AHREF,https://www.python.org/doc/essays/refcnt/,https://www.python.org/doc/api/refcounts.html,404.0 196 | 171703,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~anthony/anthonypub.asc,404.0 197 | 171704,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~gbrandl/gbrandlpub.asc,404.0 198 | 171705,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~nad/nadAA65421D.asc,404.0 199 | 171706,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~nad/nadpub.asc,404.0 200 | 171707,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~larry/larrygpg.asc,404.0 201 | 171708,AHREF,https://www.python.org/downloads/unpacking,https://www.python.org/~peterson/pubkey.asc,404.0 202 | 176998,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/NEWS.txt,404.0 203 | 177006,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/NEWS.txt,404.0 204 | 177009,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/doc/2.3.3/whatsnew/,404.0 205 | 177012,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/doc/2.3.3/,404.0 206 | 177014,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/2.2.3/descrintro,404.0 207 | 177016,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 208 | 177017,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/md5sum.py,404.0 209 | 177019,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/Python-2.3.3.tgz.asc,404.0 210 | 177021,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/Python-2.3.3.tar.bz2.asc,404.0 211 | 177023,AHREF,https://www.python.org/download/releases/2.3.3/,https://www.python.org/download/releases/2.3.3/Python-2.3.3.exe.asc,404.0 212 | 178903,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/doc/2.3/whatsnew/,404.0 213 | 178905,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3.2/NEWS.txt,404.0 214 | 178907,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/doc/2.3.2/,404.0 215 | 178910,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download.releases/2.3/mro,404.0 216 | 178911,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 217 | 178912,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3.2/md5sum.py,404.0 218 | 178914,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3.2/Python-2.3.2.tgz.asc,404.0 219 | 178916,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3.2/Python-2.3.2.tar.bz2.asc,404.0 220 | 178918,AHREF,https://www.python.org/download/releases/2.3.2/,https://www.python.org/download/releases/2.3.2/Python-2.3.2-1.exe.asc,404.0 221 | 179886,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/doc/2.3/whatsnew/,404.0 222 | 179888,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3.1/NEWS.txt,404.0 223 | 179889,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3.1/ChangeLog.txt,404.0 224 | 179891,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/doc/2.3.1/,404.0 225 | 179895,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 226 | 179896,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3.1/md5sum.py,404.0 227 | 179898,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3.1/Python-2.3.1.tgz.asc,404.0 228 | 179900,AHREF,https://www.python.org/download/releases/2.3.1/,https://www.python.org/download/releases/2.3.1/Python-2.3.1.exe.asc,404.0 229 | 181135,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/download/releases/2.3.7/NEWS.txt,404.0 230 | 181149,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/download/releases/2.3.7/NEWS.txt,404.0 231 | 181150,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/doc/2.3.5/,404.0 232 | 181152,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/download/releases/2.3.7/md5sum.py,404.0 233 | 181154,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/download/releases/2.3.7/Python-2.3.7.tgz.asc,404.0 234 | 181156,AHREF,https://www.python.org/download/releases/2.3.7/,https://www.python.org/download/releases/2.3.7/Python-2.3.7.tar.bz2.asc,404.0 235 | 182020,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/download/releases/2.3.6/NEWS.txt,404.0 236 | 182035,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/download/releases/2.3.6/NEWS.txt,404.0 237 | 182036,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/doc/2.3.5/,404.0 238 | 182038,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/download/releases/2.3.6/md5sum.py,404.0 239 | 182040,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/download/releases/2.3.6/Python-2.3.6.tgz.asc,404.0 240 | 182042,AHREF,https://www.python.org/download/releases/2.3.6/,https://www.python.org/download/releases/2.3.6/Python-2.3.6.tar.bz2.asc,404.0 241 | 183211,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/doc/2.3/whatsnew/,404.0 242 | 183213,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/doc/2.3.5/,404.0 243 | 183217,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 244 | 183218,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/download/releases/2.3.5/md5sum.py,404.0 245 | 183220,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/download/releases/2.3.5/Python-2.3.5.tgz.asc,404.0 246 | 183222,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/download/releases/2.3.5/Python-2.3.5.tar.bz2.asc,404.0 247 | 183224,AHREF,https://www.python.org/download/releases/2.3.5/,https://www.python.org/download/releases/2.3.5/Python-2.3.5.exe.asc,404.0 248 | 184379,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/NEWS.txt,404.0 249 | 184387,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/NEWS.txt,404.0 250 | 184390,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/doc/2.3.4/whatsnew/,404.0 251 | 184392,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/doc/2.3.4/,404.0 252 | 184396,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3/mro/mro.txt,404.0 253 | 184397,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/md5sum.py,404.0 254 | 184399,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/Python-2.3.4.tgz.asc,404.0 255 | 184401,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/Python-2.3.4.tar.bz2.asc,404.0 256 | 184403,AHREF,https://www.python.org/download/releases/2.3.4/,https://www.python.org/download/releases/2.3.4/Python-2.3.4.exe.asc,404.0 257 | 186412,AHREF,https://www.python.org/dev/peps/pep-0451/,"https://www.python.org/dev/peps/pep-0451/The""target""parameteroffind_spec()",404.0 258 | 187127,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/NEWS.txt,404.0 259 | 187132,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/Python-2.6.6.tgz.asc,404.0 260 | 187134,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/Python-2.6.6.tar.bz2.asc,404.0 261 | 187136,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/python-2.6.6.msi.asc,404.0 262 | 187139,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/python-2.6.6.amd64.msi.asc,404.0 263 | 187141,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/python266.chm.asc,404.0 264 | 187143,AHREF,https://www.python.org/download/releases/2.6.6/,https://www.python.org/download/releases/2.6.6/python-2.6.6-macosx10.3.dmg.asc,404.0 265 | 188122,AHREF,https://www.python.org/download/releases/2.6.7/,https://www.python.org/download/releases/2.6.7/NEWS.txt,404.0 266 | 188294,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/NEWS.txt,404.0 267 | 188299,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/Python-2.6.5.tgz.asc,404.0 268 | 188301,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/Python-2.6.5.tar.bz2.asc,404.0 269 | 188303,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/python-2.6.5.msi.asc,404.0 270 | 188306,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/python-2.6.5.amd64.msi.asc,404.0 271 | 188308,AHREF,https://www.python.org/download/releases/2.6.5/,https://www.python.org/download/releases/2.6.5/python-2.6.5.sig,404.0 272 | 189137,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/NEWS.txt,404.0 273 | 189138,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/license,404.0 274 | 189142,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/Python-2.6.4.tgz.asc,404.0 275 | 189144,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/Python-2.6.4.tar.bz2.asc,404.0 276 | 189146,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/python-2.6.4.msi.asc,404.0 277 | 189149,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/python-2.6.4.amd64.msi.asc,404.0 278 | 189151,AHREF,https://www.python.org/download/releases/2.6.4/,https://www.python.org/download/releases/2.6.4/python-2.6.4_macosx10.3.dmg.asc,404.0 279 | 189836,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/NEWS.txt,404.0 280 | 189837,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/license,404.0 281 | 189841,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/Python-2.6.3.tgz.asc,404.0 282 | 189843,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/Python-2.6.3.tar.bz2.asc,404.0 283 | 189845,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/python-2.6.3.msi.asc,404.0 284 | 189848,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/python-2.6.3.amd64.msi.asc,404.0 285 | 189850,AHREF,https://www.python.org/download/releases/2.6.3/,https://www.python.org/download/releases/2.6.3/python-2.6.3-macosx.dmg.asc,404.0 286 | 192457,AHREF,https://www.python.org/dev/,https://www.python.org/dev/searchplugin/,404.0 287 | 194258,AHREF,https://www.python.org/download/releases/2.6.8/,https://www.python.org/download/releases/2.6.8/NEWS.txt,404.0 288 | 203244,AHREF,https://www.python.org/success-stories/carmanah-lights-way-python/,https://www.python.org/files/success/carmanah/xwalk-proto-zoom.jpg,404.0 289 | 217154,AHREF,https://www.python.org/downloads/release/python-315/,https://www.python.org/downloads/release/3.1.4/,404.0 290 | 217155,AHREF,https://www.python.org/downloads/release/python-315/,https://www.python.org/downloads/release/3.1.4/,404.0 291 | 229898,AHREF,https://www.python.org/download/releases/2.0.1/,https://www.python.org/download/releases/2.0.1/NEWS.txt,404.0 292 | 229901,AHREF,https://www.python.org/download/releases/2.0.1/,https://www.python.org/download/releases/2.0.1/md5sum.py,404.0 293 | 229905,AHREF,https://www.python.org/download/releases/2.0.1/,https://www.python.org/doc/2.0.1/,404.0 294 | -------------------------------------------------------------------------------- /output/pic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/databulle/ScreamingFrog-Python-Analysis/937cb8c11c050226bc42cb8debd379291be7360b/output/pic.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | appnope==0.1.0 2 | bleach==2.1.2 3 | cycler==0.10.0 4 | decorator==4.2.1 5 | entrypoints==0.2.3 6 | html5lib==1.0.1 7 | ipykernel==4.8.0 8 | ipython==6.2.1 9 | ipython-genutils==0.2.0 10 | ipywidgets==7.1.1 11 | jedi==0.11.1 12 | Jinja2==2.10 13 | jsonschema==2.6.0 14 | jupyter==1.0.0 15 | jupyter-client==5.2.2 16 | jupyter-console==5.2.0 17 | jupyter-core==4.4.0 18 | MarkupSafe==1.0 19 | matplotlib==2.1.1 20 | mistune==0.8.3 21 | nbconvert==5.3.1 22 | nbformat==4.4.0 23 | notebook==5.3.1 24 | numpy==1.14.0 25 | pandas==0.22.0 26 | pandocfilters==1.4.2 27 | parso==0.1.1 28 | pexpect==4.3.1 29 | pickleshare==0.7.4 30 | prompt-toolkit==1.0.15 31 | ptyprocess==0.5.2 32 | Pygments==2.2.0 33 | pyparsing==2.2.0 34 | python-dateutil==2.6.1 35 | pytz==2017.3 36 | pyzmq==16.0.4 37 | qtconsole==4.3.1 38 | Send2Trash==1.4.2 39 | simplegeneric==0.8.1 40 | six==1.11.0 41 | terminado==0.8.1 42 | testpath==0.3.1 43 | tornado==4.5.3 44 | traitlets==4.3.2 45 | wcwidth==0.1.7 46 | webencodings==0.5.1 47 | widgetsnbextension==3.1.3 48 | --------------------------------------------------------------------------------