Pyhtonがデータを這い出す方法のまとめ
2711 ワード
1.方式一
1.取得したjson
requestsを用いて,このサードパーティの構築を実現する.jsonファイルを読み込むことも、Webページ情報を読み込むこともできます.
適用シーン:は、一般に、jsonファイルまたはjson文字列を返すデータを要求するために使用される. は、異なるウェブページリンクを解析することができるが、クラスであり、一定の法則に従うことができるデータである.
例:xxx/123.html xxx/124.htmlはこれらのページに似ています.
これは登ったjson文字列で、解析は簡単です.しかし、htmlが含まれているラベルに遭遇することがあります.正規表現を利用して、まず処理してください.次に、jsonのようにフォーマットされた文字列をdick(辞書)に変換してから、辞書をjson文字列に変換します.しかし、本格的に適用される場合は辞書に変換するだけでよく、jsonに変換する必要はありません.jsonは文字列であり、keyに対応するvalue値を取得するのに不便です.でも辞書はdick_に基づいてname['key_name']を使用して、keyに対応するvalue値を取得します.
2.Webソースファイルを取得
Webページのソースファイルを取得する場合は、ネットワークのソースファイルを解析するツールBeautifulSoupが必要です.
soupはラベル要素の集合またはクラスです.ここではsoupでラベルのプロパティ、またはラベルの値、またはラベルポイントのプロパティ値を取得できます.例:
2.方式二
selenium+webdriverを使用する方法は、ブラウザに対する操作をリアルに模倣して、最大効率の爬虫類の這い出しと反爬虫類の防止を実現する無厘頭の要求方式である.
1.weddriverのインストール
対応するwebdriverをダウンロードして、1つのディレクトリの下に置いて、スペースと中国語のディレクトリの下でないほうがいいです.
次に、環境変数の種類で構成します.
ダウンロードしたdriverもchromeのインストールディレクトリの下に置きます.
2.次に、対応するキットをインポートします.
driverのパスを設定するには、次の手順に従います.
3.driverの作成
4.keysの使用
例えば、以上のクリックイベントは、手動でWebページを切り替えるプロセスを模倣し、切り替えた後もデータの抽出を継続することができます.明示的にjsonデータを返さず、クリックしてページを切り替えたときにページリンクが変わらず、ページデータを取得できないという問題を解決しました.
1.取得したjson
import requests
requestsを用いて,このサードパーティの構築を実現する.jsonファイルを読み込むことも、Webページ情報を読み込むこともできます.
適用シーン:
例:xxx/123.html xxx/124.htmlはこれらのページに似ています.
data = requests.get(url=url, verify=False)
if data.status_code == 404:
print(url)
return "no"
str = data.text
これは登ったjson文字列で、解析は簡単です.しかし、htmlが含まれているラベルに遭遇することがあります.正規表現を利用して、まず処理してください.次に、jsonのようにフォーマットされた文字列をdick(辞書)に変換してから、辞書をjson文字列に変換します.しかし、本格的に適用される場合は辞書に変換するだけでよく、jsonに変換する必要はありません.jsonは文字列であり、keyに対応するvalue値を取得するのに不便です.でも辞書はdick_に基づいてname['key_name']を使用して、keyに対応するvalue値を取得します.
import re
# re
re_h = re.compile('?\w+[^>]*>')
res = re_h.sub('', res)
#
dick_data = json.loads(res)
2.Webソースファイルを取得
Webページのソースファイルを取得する場合は、ネットワークのソースファイルを解析するツールBeautifulSoupが必要です.
import requests
from bs4 import BeautifulSoup
import urllib3
# https
urllib3.disable_warnings()
file = requests.get(url=url, verify=False)
soup = BeautifulSoup(file.text, "html.parser")
soupはラベル要素の集合またはクラスです.ここではsoupでラベルのプロパティ、またはラベルの値、またはラベルポイントのプロパティ値を取得できます.例:
#
info1 = soup.select('h4')[0]
print(info1.text)
2.方式二
selenium+webdriverを使用する方法は、ブラウザに対する操作をリアルに模倣して、最大効率の爬虫類の這い出しと反爬虫類の防止を実現する無厘頭の要求方式である.
1.weddriverのインストール
対応するwebdriverをダウンロードして、1つのディレクトリの下に置いて、スペースと中国語のディレクトリの下でないほうがいいです.
次に、環境変数の種類で構成します.
C:\Program Files (x86)\Google\Chrome\Application
ダウンロードしたdriverもchromeのインストールディレクトリの下に置きます.
2.次に、対応するキットをインポートします.
# selenium
from selenium import webdriver
# keys
from selenium.webdriver.common.keys import Keys
# chrome
from selenium.webdriver.chrome.options import Options
driverのパスを設定するには、次の手順に従います.
_CHROME_DRIVER_WIN = 'F:/software/chromedriver.exe'
3.driverの作成
# driver
def create_driver():
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(executable_path=config._CHROME_DRIVER_WIN, options=chrome_options)
return driver
driver , bs4 。
soup = BeautifulSoup(driver.page_source, 'html.parser')
4.keysの使用
driver.find_element_by_id('next_buttons').click()
例えば、以上のクリックイベントは、手動でWebページを切り替えるプロセスを模倣し、切り替えた後もデータの抽出を継続することができます.明示的にjsonデータを返さず、クリックしてページを切り替えたときにページリンクが変わらず、ページデータを取得できないという問題を解決しました.