検索
ホームページバックエンド開発Python チュートリアルPythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

#記事ディレクトリ

    urllib
  • リクエストモジュール
    • アクセス URL
    • リクエスト クラス
    • その他のクラス
  • 解析モジュール
    • 解析 URL
    • エスケープ URL
  • robots.txt ファイル

(無料学習の推奨事項: Python ビデオ チュートリアル

urllib


##urllib

は、Python で URL を処理するために使用されます。ツールキット、ソースコードは /Lib/ の下にあります。これには、URL を開いて読み書きするために使用される request モジュール、request モジュールによって引き起こされる例外を引き起こす error モジュール、および ## URL の解析に使用される #error モジュール。parse モジュール、応答処理用の response モジュール、および robots.txt ファイルの分析用の robotparser モジュール。

バージョンの違いに注意してください。

urllib には 3 つのバージョンがあります: Python2.X には urlliburllib2 モジュール、Python3 が含まれます。## と urlparse は ## に合成されます。 #urllib パッケージ、urllib3 は新しいサードパーティ ツール パッケージです。 「urllib2 という名前のモジュールがありません」などの問題が発生した場合、ほとんどの場合、Python のバージョンの違いが原因です。 urllib3 は、HTTP クライアント向けの強力な機能と明確な規制を備えた Python ライブラリです。圧縮エンコーディング、接続プーリング、スレッド セーフ、SSL/TLS 認証、HTTP および SCOCKS プロキシなど、Python 標準ライブラリにはない多くの機能が提供されます。 pip 経由でインストールできます: pip install urllib3

GitHub 経由で最新のコードをダウンロードすることもできます:

git clone git://github.com/shazow/urllib3.git
python setup.py install
urllib3
リファレンスドキュメント: https://urllib3.readthedocs.io/en/latest/Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
request module

##urllib.request

モジュールは認証を定義します、リダイレクト、Cookie、および URL 関数とクラスを開くためのその他のアプリケーション。

request
パッケージを簡単に紹介します。このパッケージは、高度な非基盤 HTTP クライアント インターフェイスに使用され、

request モジュールよりも強力なフォールト トレランスを備えています。 request

は、urllib2 の機能を継承する urllib3 を使用します。これは、HTTP 接続の維持と接続プーリングをサポートし、セッション、ファイルのアップロード、自動解凍、Unicode 応答、HTTP(S) プロキシなどを維持するための Cookie の使用をサポートします。 。詳細については、ドキュメント http://requests.readthedocs.io を参照してください。

以下では、urllib.request モジュールの共通関数とクラスを紹介します。 アクセス URL

1.

urlopen()

urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=false,context=None)
この関数は、URL データをキャプチャするために使用されます。とても重要です。上記のパラメータでは、URL パラメータ (文字列または

Request
オブジェクト) を除き、残りのパラメータにはデフォルト値があります。

①URL パラメータ

from urllib import requestwith request.urlopen("http://www.baidu.com") as f:
    print(f.status)
    print(f.getheaders())#运行结果如下200[('Bdpagetype', '1'), ('Bdqid', '0x8583c98f0000787e'), ('Cache-Control', 'private'), ('Content-Type', 'text/html;charset=utf-8'), ('Date', 'Fri, 19 Mar 2021 08:26:03 GMT'), ('Expires', 'Fri, 19 Mar 2021 08:25:27 GMT'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('Server', 'BWS/1.1'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706D726852655C9FA21:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BIDUPSID=B050D0981EE3A706D726852655C9FA21; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'PSTM=1616142363; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706FA20DF440C89F27F:FG=1; max-age=31536000; expires=Sat, 19-Mar-22 08:26:03 GMT; domain=.baidu.com; path=/; version=1; comment=bd'), ('Set-Cookie', 'BDSVRTM=0; path=/'), ('Set-Cookie', 'BD_HOME=1; path=/'), ('Set-Cookie', 'H_PS_PSSID=33272_33710_33690_33594_33600_33624_33714_33265; path=/; domain=.baidu.com'), ('Traceid', '161614236308368819309620754845011048574'), ('Vary', 'Accept-Encoding'), ('Vary', 'Accept-Encoding'), ('X-Ua-Compatible', 'IE=Edge,chrome=1'), ('Connection', 'close'), ('Transfer-Encoding', 'chunked')]
②データ パラメータ

データがサーバーに送信される場合、データ パラメータはデータを含む byes オブジェクトである必要があります。それ以外の場合は None です。 Python 3.2 以降では、反復可能なオブジェクトにすることができます。その場合、Content-Length パラメータを

headers

に含める必要があります。 HTTP リクエストで

POST

メソッドを使用する場合、データにはデータが必要です。
GET メソッドを使用する場合、データは None として書き込むことができます。

from urllib import parsefrom urllib import request
data = bytes(parse.urlencode({"pro":"value"}),encoding="utf8")response = request.urlopen("http://httpbin.org/post",data=data)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "pro": "value"\n  }, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Content-Length": "9", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "Python-urllib/3.9", \n    "X-Amzn-Trace-Id": "Root=1-60545f5e-7428b29435ce744004d98afa"\n  }, \n  "json": null, \n  "origin": "112.48.80.243", \n  "url": "http://httpbin.org/post"\n}\n'
データの POST リクエストを行うには、bytes タイプまたは iterable タイプをトランスコードする必要があります。ここでは、バイト変換は

bytes() によって実行されます。最初のパラメータが文字列であることを考慮すると、解析モジュールの urlencode() メソッドを使用する必要があります (後述)。データは文字列に変換され、エンコード形式は utf8 として指定されます。テスト Web サイト httpbin.org では HTTP テストを提供できます。返されたコンテンツから、送信ではフォームが属性として、辞書が属性値として使用されていることがわかります。 ③timeout パラメータ このパラメータはオプションです。タイムアウトを秒単位で指定します。この時間を超えると、すべての操作がブロックされます。指定しない場合、デフォルトは sock になります。対応する値は.GLOBAL_DEFAULT_TIMEOUT まで。このパラメータは、http、https、および ftp 接続でのみ有効です。 タイムアウト後、urllib.error.URLError: 例外がスローされます。この例外を処理するには、try...Except を使用できます。

from urllib import request
response = request.urlopen("http://httpbin.org/get",timeout=1)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Host": "httpbin.org", \n    "User-Agent": "Python-urllib/3.9", \n    "X-Amzn-Trace-Id": "Root=1-605469dd-76a6d963171127c213d9a9ab"\n  }, \n  "origin": "112.48.80.243", \n  "url": "http://httpbin.org/get"\n}\n'

④オブジェクトの共通メソッドとプロパティを返します
最初の 3 つの urlopen()共通パラメータに加えて、この関数はコンテキスト マネージャー (コンテキスト) として使用されるクラス ファイルを返します。

geturl(): 要求された URL を返します。通常、リダイレクトされた URL は引き続き取得できます。


info(): httplib を返します。 HTTPMessage オブジェクト。リモート サーバーから返されたヘッダー情報を示します。 getcode(): 応答の後に HTTP ステータス コードを返します。

    status 属性: 応答の後に HTTP ステータス コードを返します。
  • msg属性:リクエスト結果
from urllib import request
response = request.urlopen("http://httpbin.org/get")print(response.geturl())print("===========")print(response.info())print("===========")print(response.getcode())print("===========")print(response.status)print("===========")print(response.msg)
  • 実行結果:
  • 添付ファイル:ステータスに対応するステータスコード
    • 1xx(informational):请求已经收到,正在进行中。
    • 2xx(successful):请求成功接收,解析,完成。
    • 3xx(Redirection):需要重定向。
    • 4xx(Client Error):客户端问题,请求存在语法错误,网址未找到。
    • 5xx(Server Error):服务器问题。

    二、build_opener()

    urllib.request.build_opener([handler1 [handler2, ...]])

    该函数不支持验证、cookie及其他HTTP高级功能。要支持这些功能必须使用build_opener()函数自定义OpenerDirector对象,称之为Opener。

    build_opener()函数返回的是OpenerDirector实例,而且是按给定的顺序链接处理程序的。作为OpenerDirector实例,可以从OpenerDirector类的定义看出他具有addheaders、handlers、handle_open、add_handler()、open()、close()等属性或方法。open()方法与urlopen()函数的功能相同。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
    上述代码通过修改http报头进行HTTP高级功能操作,然后利用返回对象open()进行请求,返回结果与urlopen()一样,只是内存位置不同而已。

    实际上urllib.request.urlopen()方法只是一个Opener,如果安装启动器没有使用urlopen启动,调用的就是OpenerDirector.open()方法。那么如何设置默认全局启动器呢?就涉及下面的install_opener函数。

    三、install_opener()

    urllib.request.install_opener(opener)

    安装OpenerDirector实例作为默认全局启动器。
    首先导入request模块,实例化一个HTTPBasicAuthHandler对象,然后通过利用add_password()添加用户名和密码来创建一个认证处理器,利用urllib.request.build_opener()方法来调用该处理器以构建Opener,并使其作为默认全局启动器,这样Opener在发生请求时具备了认证功能。通过Opener的open()方法打开链接完成认证。

    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
    当然了,CSDN不需要账号密码也可以访问,读者还可以在其他网站上用自己的账号进行测试。

    除了上述方法外,还有将路径转换为URL的pathname2url(path)、将URL转换为路径的url2pathname(path),以及返回方案至代理服务器URL映射字典的getproxies()等方法。

    Request类


    前面介绍的urlopen()方法可以满足一般基本URL请求,如果需要添加headers信息,就要考虑更为强大的Request类了。Request类是URL请求的抽象,包含了许多参数,并定义了一系列属性和方法。

    一、定义

    class urllib.request.Request(url,data=None,headers={},origin_req_host=None,unverifiable=False,method=None)
    • 参数url是有效网址的字符串,同urlopen()方法中一样,data参数也是。
    • headers是一个字典,可以通过add_header()以键值进行调用。通常用于爬虫爬取数据时或者Web请求时更改User-Agent标头值参数来进行请求。
    • origin_req_host是原始请求主机,比如请求的是针对HTML文档中的图像的,则该请求主机是包含图像页面所在的主机。
    • Unverifiable指示请求是否是无法验证的。
    • method指示使用的是HTTP请求方法。常用的有GET、POST、PUT、DELETE等,

    代码示例:

    from urllib import requestfrom urllib import parse
    data = parse.urlencode({"name":"baidu"}).encode('utf-8')headers = {'User-Agent':'wzlodq'}req = request.Request(url="http://httpbin.org/post",data=data,headers=headers,method="POST")response = request.urlopen(req)print(response.read())#运行结果如下b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {\n    "name": "baidu"\n  }, \n  "headers": {\n    "Accept-Encoding": "identity", \n    "Content-Length": "10", \n    "Content-Type": "application/x-www-form-urlencoded", \n    "Host": "httpbin.org", \n    "User-Agent": "wzlodq", \n    "X-Amzn-Trace-Id": "Root=1-605491a4-1fcf3df01a8b3c3e22b5edce"\n  }, \n  "json": null, \n  "origin": "112.48.80.34", \n  "url": "http://httpbin.org/post"\n}\n'

    注意data参数和前面一样需是字节流类型的,不同的是调用Request类进行请求。

    二、属性方法

    ①Request.full_url
    full_url属性包含setter、getter和deleter。如果原始请求URL片段存在,那么得到的full_url将返回原始请求的URL片段,通过添加修饰器@property将原始URL传递给构造函数。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    ②Request.type:获取请求对象的协议类型。
    ③Request.host:获取URL主机,可能含有端口的主机。
    ④Request.origin_req_host:发出请求的原始主机,没有端口。
    ⑤Request.get_method():返回显示HTTP请求方法的字符串。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

    ⑥Request.add_header(key,val):向请求中添加标头。

    from urllib import requestfrom urllib import parse
    data = bytes(parse.urlencode({'name':'baidu'}),encoding='utf-8')req = request.Request('http://httpbin.org/post',data,method='POST')req.add_header('User-agent','test')response = request.urlopen(req)print(response.read().decode('utf-8'))

    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
    上述代码中,通过add_header()传入了User-Agent,在爬虫过程中,常常通过循环调用该方法来添加不同的User-Agent进行请求,避免服务器针对某一User-Agent的禁用。

    其他类


    BaseHandler为所有注册处理程序的基类,并且只处理注册的简单机制,从定义上看,BaseHandler提供了一个添加基类的add_parent()方法,后面介绍的类都是继承该类操作的。

    • HTTPErrorProcessor:用于HTTP错误响应过程。
    • HTTPDefaultErrorHandler:用于处理HTTP响应错误。
    • ProxyHandler:用于设置代理。
    • HTTPRedirectHandler:用于设置重定向。
    • HTTPCookieProcessor:用于处理cookie。
    • HEEPBasicAuthHandler:用于管理认证。

    parse模块


    parse模块用于分解URL字符串为各个组成部分,包括寻址方案、网络位置、路径等,也可将这些部分组成URL字符串,同时可以对“相对URL"进行转换等。

    解析URL


    一、urllib.parse.urlparse(urlstring,scheme=’’,allow_fragments=True)
    解析URL为6个部分,即返回一个6元组(tuple子类的实例),tuple类具有下标所示的属性:

    属性 说明 对应下标指数 不存在时的取值
    scheme URL方案说明符 0 scheme参数
    netloc 网络位置部分 1 空字符串
    path 分层路径 2 空字符串
    params 最后路径元素的参数 3 空字符串
    query 查询组件 4 空字符串
    fragment 片段标识符 5 空字符串
    username 用户名
    None
    password 密码
    None
    hostname 主机名
    None
    port 端口号
    None

    最后组成的URL结构为scheme://netloc/path;parameters?query#fragment
    举个栗子:

    from urllib.parse import *res = urlparse('https://wzlodq.blog.csdn.net/article/details/113597816')print(res)print(res.scheme)print(res.netloc)print(res.path)print(res.params)print(res.query)print(res.username)print(res.password)print(res.hostname)print(res.port)print(res.geturl())print(tuple(res))print(res[0])print(res[1])print(res[2])

    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
    需要注意的是urlparse有时并不能很好地识别netloc,它会假定相对URL以路径分量开始,将其取值放在path中。

    二、urllib.parse.urlunparse(parts)
    urlparse()的逆操作,即将urlparse()返回的原则构建一个URL。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    三、urllib.parse.urlsplit(urlstring,scheme=’’.allow_fragments=True)
    类似urlparse(),但不会分离参数,即返回的元组对象没有params元素,是一个五元组,对应下标指数也发生了改变。

    from urllib.parse import *sp = urlsplit('https://wzlodq.blog.csdn.net/article/details/113597816')print(sp)#运行结果如下SplitResult(scheme='https', netloc='wzlodq.blog.csdn.net', path='/article/details/113597816', query='', fragment='')

    四、urllib.parse.urlunsplit(parts)
    类似urlunparse(),是urlsplit()的逆操作,不再赘述。

    五、urllib.parse.urljoin(base,url,allow_fragments=True)
    该函数主要组合基本网址(base)与另一个网址(url)以构建新的完整网址。
    相对路径和绝对路径的url组合是不同的,而且相对路径是以最后部分路径进行替换处理的:
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    六、urllib.parse.urldefrag(url)
    根据url进行分割,如果url包含片段标识符,就返回url对应片段标识符前的网址,fragment取片段标识符后的值。如果url没有片段标识符,那么fragment为空字符串。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    转义URL


    URL转义可以避免某些字符引起歧义,通过引用特殊字符并适当编排非ASCII文本使其作为URL组件安全使用。同时也支持反转这些操作,以便从URL组件内容重新创建原始数据。

    一、urllib.parse.quote(string,safe=’/’,encoding=None,errors=None)
    使用%xx转义替换string中的特殊字符,其中字母、数字和字符’_.-‘不会进行转义。默认情况下,此函数用于转义URL的路径部分,可选的safe参数指定不应转义的其他ASCII字符——其默认值为’/’。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明
    特别注意的是若string是bytes,encoding和errors就无法指定,否则报错TypeError。

    二、urllib.parse.unquote(string,encoding=‘utf-8’,errors=‘replace’)
    该函数时quote()的逆操作,即将%xx转义为等效的单字符。参数encoding和errors用来指定%xx编码序列解码为Unicode字符,同bytes.decode()方法。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    三、urllib.parse.quote_plus(string,safe=’’,encoding=None,errors=None)
    该函数时quote()的增强版,与之不同的是用+替换空格,而且如果原始URL有字符,那么+将被转义。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    四、urllib.parse.unquote_plus(string,encoding=‘utf-8’,errors=‘replace’)
    类似unquote(),不再赘述。

    五、urllib.parse.urlencode(query,doseq=False,safe=’’,encoding=None,errors=None,quote_via=quote_plus)
    该函数前面提到过,通常在使用HTTP进行POST请求传递的数据进行编码时使用。
    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    robots.txt文件


    robotparser模块很简单,仅定义了3个类(RobotFileParserRuleLineEntry)。从__all__属性来看也就RobotFileParser一个类(用于处理有关特定用户代理是否可以发布robots.txt文件的网站上提前网址内容)。

    robots文件类似一个协议文件,搜索引擎访问网站时查看的第一个文件,会告诉爬虫或者蜘蛛程序在服务器上可以查看什么文件。

    RobotFileParser类有一个url参数,常用以下方法:

    • set_url(): robots.txt ファイルを指す URL を設定するために使用されます。
    • read(): robots.txt URL を読み取り、パーサーに提供します。
    • parse(): robots.txt ファイルを解析するために使用されます。
    • can_fetch(): URL を拡張できるかどうかを判断するために使用されます。
    • mtime(): robots.txt ファイルが最後にクロールされた時刻を返します。
    • modified(): robots.txt ファイルが最後にクロールされた時刻を現在時刻に設定します。

    Pythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明

    無料の学習に関する推奨事項が多数あります。Python チュートリアル をご覧ください。 #(ビデオ)#########

  • 以上がPythonのurllibクローラ、リクエストモジュール、解析モジュールの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

    限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

    Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

    PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

    Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

    Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

    2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

    2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

    Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

    Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

    2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

    2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

    プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

    10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

    中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

    fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 新バージョン

    SublimeText3 Linux 最新バージョン

    Dreamweaver Mac版

    Dreamweaver Mac版

    ビジュアル Web 開発ツール

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    mPDF

    mPDF

    mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

    VSCode Windows 64 ビットのダウンロード

    VSCode Windows 64 ビットのダウンロード

    Microsoft によって発売された無料で強力な IDE エディター