pythonでネットの爬虫類を書きます-ホームページをダウンロードします


爬虫類を習い始めましたが、本を読み始めたばかりでpython 2.7を例に説明しました.多くのモジュールがpython 3.xに適していませんが、この本を読んだとき、彼が言った多くのモジュールがほとんど似合っていないことに気づきました.だからpython 3.6で書くことにしました.3と2の違いをよく体得しました.
1.まずpython 3のurllib 2モジュールとurllibモジュールを統合し、2でurllib 2.xxxをurllib.request.xxxに置き換えるとよい
import urllib.request  
import urllib.error
import re

def download(url):
    return urllib.request.urlopen(url).read()

def save(file_name, file_content):
    with open(file_name.replace('/', '_') + ".html", "wb") as f:
        f.write(file_content)

murl="http://blog.csdn.net/joliph"
html = download(murl)
save(re.split('/',murl)[-1], html)

ここでは、reモジュールという別のモジュールを使用しています.re.splitは、複数の分割子を含む文字列を分割し、分割された文字列のリストを返し、-1を直接使用してWebページの最後の部分の名前を見つけることができます.非常に実用的です.
save(murl.split('/')[-1], html)

ここには区切り記号「/」が1つしかないので、このように書いてもいいです.
更新!
import urllib.request  
import urllib.error
import re

def download(url):
    print("downloading:"+url)
    headers={'User-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
    request=urllib.request.Request(url,headers=headers)
    try:
        content=urllib.request.urlopen(request).read()
    except urllib.error.URLError as e:
        print("download error:"+e.reason)
        content=None
    return content

def save(file_name, file_content):
    print("saving.......")
    try:
        with open(file_name + ".html", "wb") as f:
            f.write(file_content)
    except TypeError:
        print("TypeError")


murl="http://www.budejie.com/"
html = download(murl)
save(re.split('/',murl)[-1], html)