キャプチャ、(このような要求のライブラリなど)のインタフェース要求と操作セレンのメソッドの数の学習の後、基本的にはほとんどのウェブサイトのコンテンツをクロール爬虫類を書くことができます。
爬虫類の分野では、セレンは常に防衛の最後の行です。本質的には、Webページが実際にインタフェース要求でアクセスします。要求URL、ページのソースコードを返します。
私達はちょうどHTMLを解析したり、我々は定期的に試合を渡すために必要なデータを抽出する必要があります。
一部のサイトでは、我々はrequests.get(URL)、すべてのデータを取得するために取得した応答テキストを使用することができます。そして、いくつかのウェブページのデータを動的にJSでページにロードされます。取得またはのみデータの一部を取得することができない要求を使用してください。
この時点では、JSの実行後に、完全なソースコードを取得するにはdriver.page_sourceを使用して、ページを開くには、セレンを使用することができます。
たとえば、私たちは、あなたがページのソースに入るために要求を使用することができ、名前のdiroの公式サイトのハンドバッグ、価格、URL、画像などのデータをクロールする必要がある
Webページに開いた開発者向けツールを訪問し、我々はすべての商品がでていることがわかります
html形式、さまざまなオプション、などのデータがxml.etree実施形態を使用することができるソースから抽出された、BS4が速くlxmlのと嵌合する、HTML構文解析ライブラリを使用することは比較的容易です。
BS4の使用
from bs4 import BeautifulSoup
soup = BeautifulSoup(网页源代码字符串,'lxml')
soup.find(...).find(...)
soup.findall()
soup.select('css selector语法')
soup.find()、次のようなノード属性、を検索することができ、soup.find('div', id='节点id')
あるいはsoup.find('li', class_='某个类名')
またはsoup.find('标签名', 属性=属性值)
、ノードを発見した後、このノードは、そのサブノードを見て継続するために使用することができます。
soup.findallは()、それはリストを返し、ノードの同じ属性の多くを見つけることです。
soup.selectは()CSSセレクタの構文検索がリストを返す使用することです。
以下はサンプルコードです:
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome()
driver.get('https://www.dior.cn/zh_cn/女士精品/皮具系列/所有手提包')
soup = BeautifulSoup(driver.page_source, 'lxml')
products = soup.select('li.is-product')
for product in products:
name = product.find('span', class_='product-title').text.strip()
price = product.find('span', class_='price-line').text.replace('¥', '').replace(',','')
url = 'https://www.dior.cn' + product.find('a', class_='product-link').attrs['href']
img = product.find('img').attrs['src']
sku = img.split('/')[-1]
print(name, sku, price)
driver.quit()
動作の結果、以下に示すように:
注:この例では、使用されてもよいrequests.get()ページのソースコード、フォーマットと若干異なるローディングセレンの使用を取得します。
シンプルな爬虫類を書くための一般的な手順は次のとおりです。
- リストページに、オープン開発ツールは、ページを更新します(すべての製品データ・インタフェースのための直接的なリターンJSON形式)XHRデータ・インタフェースをキャッチすることができれば、新製品がロードされている表示するには、スクロールダウン
- そのようなインタフェースがある場合は、すべての製品データの復帰からインタフェースかどうかを見るためにページ付けのパラメータの値を変更しようと、要求の合計値
- インタフェースの唯一のドキュメントタイプがページに戻った場合は、(requests.getを使用してみてください)応答テキストを解析し、ページを要求し、すべての製品データが含まれています
- あなたが製品のデータ要求を得ることができない、または不完全なデータがセレンがページを読み込む使用することができ、その後、BS4直接抽出を使用する場合は、複数のページがある場合は、動作の1サイクルずつをすることができます。