<commit_before>---
layout: post
title: "urllib"
date: "2021-11-24"
excerpt: "urllibモジュールの使い方"
project: false
config: true
tag: ["urllib", "python"]
comments: false
---

# urllibモジュールの使い方

## 概要
 - python3のURLハンドリングモジュール

## 例

### urlを要素ごとに分ける

```python
from urllib.parse import urlparse
from urllib.parse import urljoin

x = urlparse("https://news.yahoo.co.jp/something?a=b")
x

>> ParseResult(scheme='https', netloc='news.yahoo.co.jp', path='/something', params='', query='a=b', fragment='')
```

### パースした一部の要素を変更する

```python
x = urlparse("https://news.yahoo.co.jp/something?a=b")
x._replace(scheme="http")

>> ParseResult(scheme='http', netloc='news.yahoo.co.jp', path='/something', params='', query='a=b', fragment='')
```

### パースしたオブジェクトからstr型のURLを得る

```python
x = urlparse("https://news.yahoo.co.jp/something?a=b")
x._replace(scheme="http")
x.geturl()

>> 'https://news.yahoo.co.jp/something?a=b'
```

### 相対パスから絶対パスを得る

```python
urljoin("https://news.yahoo.co.jp/ex0/ex1/?a=b", "../../relative.html")

>> 'https://news.yahoo.co.jp/relative.html'
```
<commit_msg>update "urllib" doc<commit_after>---
layout: post
title: "urllib"
date: "2021-11-24"
excerpt: "urllibモジュールの使い方"
project: false
config: true
tag: ["urllib", "python"]
comments: false
---

# urllibモジュールの使い方

## 概要
 - python3のURLハンドリングモジュール

## 例

### urlを要素ごとに分ける

```python
from urllib.parse import urlparse
from urllib.parse import urljoin

x = urlparse("https://news.yahoo.co.jp/something?a=b")
x

>> ParseResult(scheme='https', netloc='news.yahoo.co.jp', path='/something', params='', query='a=b', fragment='')
```

### パースした一部の要素を変更する

```python
x = urlparse("https://news.yahoo.co.jp/something?a=b")
x._replace(scheme="http")

>> ParseResult(scheme='http', netloc='news.yahoo.co.jp', path='/something', params='', query='a=b', fragment='')
```

### パースしたオブジェクトからstr型のURLを得る

```python
x = urlparse("https://news.yahoo.co.jp/something?a=b")
x._replace(scheme="http")
x.geturl()

>> 'https://news.yahoo.co.jp/something?a=b'
```

### 相対パスから絶対パスを得る

```python
urljoin("https://news.yahoo.co.jp/ex0/ex1/?a=b", "../../relative.html")

>> 'https://news.yahoo.co.jp/relative.html'
```

## google colab
 - [colab](https://colab.research.google.com/drive/1l4aUlJXthmDewMSVSRwFlnuW0_wJnsf_?usp=sharing)
{'fraction_non_alphanumeric': 0.22599118942731278, 'fraction_numerical': 0.011013215859030838, 'mean_word_length': 5.397183098591549, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 19, 'https://': 13, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1865531', 'n_tokens_mistral': 1072, 'n_tokens_neox': 997, 'n_words': 133}