今回初めてクローラーに触れるのですが、このプログラムは初心者がクローラーとは何か、そしてクローラーの基本的なロジックを理解するのに役立ちます。 (NetEase Cloud Classroom の Heibanke 教師のプログラムを参照して書かれています。Hebanke 教師のコースは非常に明確なので、興味のあるプレイヤーはチェックしてみてください)
クロールされた URL は http://www.heibanke.com /lesson です/crawler_ex00/完了する必要があるタスクは、URL の後に表示された番号を入力して次の URL に転送し、表示された番号を再度読み取り、次の URL に転送することで、
をループします。クローラーの要件
クロール時には urllib と BeautifulSoup の 2 つのライブラリを使用する必要があります。URLlib は Python に付属するライブラリです。
pip install beautifulsoup4
インストールは成功しました インポート後
import urllibfrom bs4 import BeautifulSoup
urllib は、クロールする Web サイトを開くために URL を操作するための一連の関数を提供します。
urllib.urlopen(url)
Beautifulsoup は主に HTML を解析するために使用され、 HTML を数値に変換します。各ノードは Python オブジェクトです。すべてのオブジェクトは 4 つのタイプに要約できます: 1.Tag2.NavigableString3.BeautifulSoup4.Comment HTML が
<html> <[head])> <title> The Dormouse's story </title>
print soup.title>>><title>The Dormouse's story</title>
print soup.title.string>>>The Dormouse's story
の場合: プログラム ロジック: ページ上の数字を読み上げ、 URL の後に、数字のない最後のページに入るまで、新しいページの番号を読み続けます。 ブレーク プログラムは次のとおりです:
import urllibfrom bs4 import BeautifulSoupimport re#这个库导入是为了使用正则表达式读取读取找到的内容中的数字url='http://www.heibanke.com/lesson/crawler_ex00/'number=['']#用于储存读到的数字while True: content = urllib.urlopen(url+number[0])#number为字符串,number[0]为数字 bs_obj = BeautifulSoup(content,"html.parser")#html.parser表示解析网站,不返回任何值 number = bs_obj.h3.string#网页显示出的“你需要在网址后输入数字44513”在html的h3 tag中,number在这里读出了h3里面的内容 number= re.findall(r'\d+',number)#读出了number里面的数字 if not number:#必须判断页面中还有是否还有number,没有说明已经到了最后一个页面,这时应该跳出循环,打印 bs_obj.h3.string break else: print number[0]print bs_obj.h3.string