序文
Pythonを使用して単純なBiqugeクローラーを作成し、入力した小説のURLに従って小説全体をクロールし、txtファイルに保存します。クローラーはBeautifulSoupライブラリのselectメソッドを使用し、結果を次の図に示します。
この記事はクローラーを学ぶためだけのものです
1.Webページ分析
Douluo Mainland NovelのURLの例は次のとおりです:http://www.biquge001.com/Book/2/2486/
各チャプターのWebページアドレスとチャプター名は<"divid = list dl dd a>のタグに配置されているため、BeautfulSoupのselectメソッドを使用してURLとチャプター名を取得できます。
Tag = BeautifulSoup(getHtmlText(url)、 "html.parser")#here getHtmlTextは、自分で作成したhtmlを取得するメソッドです urls = Tag.select( "div #list dl dd a")
次に、リストを繰り返し処理します
url内のurlの場合: href = "http://www.biquge001.com/" + url ['href']#正しいURLへの文字列のスプライシング pageName = url.text#各章の名前
次に、各章のコンテンツが同じ方法で<div id = "content"に保存されます。
Substance = Tag.select( "div #content")#記事のコンテンツ
最後に、同じ方法で、ホームページで小説の名前を取得します<"div id = info h1>
bookName = Tag.select( "div #info h1")
2.コードを入力します
1.Htmlとwriteメソッドを取得します
def getHtmlText(url): r = requests.get(url、headers = headers) r.encoding = r.apparent_encoding#编码変換 换r.raise_for_status() return r.text def writeIntoTxt(filename、content): with open(filename、 "w"、encoding = "utf-8")as f: f.write(content) f.close() print(filename + "已被害")
2.残りのコード
コードは次のとおりです(例):
url = "http://www.biquge001.com/Book/2/2486/" SubstanceStr = "" bookName1 = "" html = getHtmlText(url) #このファイルが存在するかどうかを確認する Tag = BeautifulSoup(getHtmlText(url)、 " html.parser ") urls = Tag.select(" div #list dl dd a ") bookName = Tag.select(" div #info h1 ") for i in bookName: bookName1 = i.text if not os.path.exists (bookName1): os.mkdir(bookName1) print(bookName1 + "Created") else: print( "ファイルが作成されました") for url in urls: href = "http://www.biquge001.com/" + url ['href']#正しいURLを形成するための文字列の 連結pageName = url。text#各チャプター パスのチャプター名= bookName1 + "\\"#パス fileName = path + url.text + ".txt"#ファイル名= path +チャプター名+ "。txt" Tag = BeautifulSoup(getHtmlText(href)、 "html.parser")#各ページを解析します substance = Tag.select( "div #content")# 実質内のiの記事のコンテンツ: substanceStr = i.text writeIntoTxt(fileName 、substanceStr) time.sleep(1)
総括する
BeautfulSoupのselectメソッドを使用して、BiqugeのWebページをクロールするだけです。
最近、多くの友人がプライベートメッセージを通じてPythonの学習問題について相談しました。コミュニケーションを促進するには、青をクリックしてディスカッションに参加し、自分でリソースベースに回答してください