Pythonの使用法の概要

ライブラリの使用を要求します。

要求は、HTTPライブラリのPython実装を使用するのは簡単です

それは、サードパーティのライブラリであるため、その使用の前に設置さcmdを

×××背の高い要求ピップ

インストールが完了し、インポートされた後、通常の準備に使用します

基本的な使い方:

リクエストのインポートは
BeautifulSoup BS4輸入形成
レスポンス= requests.get( ' http://www.baidu.com ')
印刷(response.status_code)#印刷ステータスコードの
印刷(response.url)#印刷要求URLの
印刷(Response.Headersを) #印刷ヘッダ情報
印刷(response.cookies)#クッキー情報印刷
ソーステキストの印刷(response.text)#印刷ページ
バイトの印刷(response.content)#プリントストリーム

#!は/ usr / binに/ ENVパイソン

エンコーディング= UTF-8

将来の輸入print_functionの
インポート要求
BS4輸入BeautifulSoupから
輸入pymongoの
輸入JSON

デシベル= pymongo.MongoClient()IAAF。
デフspider_iaaf():

longjumpにURL 100

# url = 'https://www.iaaf.org/records/toplists/sprints/100-metres/outdoor/men/senior/2018?page={}'
url = 'https://www.iaaf.org/records/toplists/jumps/long-jump/outdoor/men/senior/2018?regionType=world&windReading=regular&page={}&bestResultsOnly=true'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15', }

for i in range(1,23):
    res = requests.get(url.format(i), headers=headers)
    html = res.text
    print(i)
    soup = BeautifulSoup(html, 'html.parser')
    #tbody_l = soup.find_all('tbody')
    record_table = soup.find_all('table', class_='records-table')
    list_re = record_table[2]
    tr_l = list_re.find_all('tr')
    for i in tr_l:    # 针对每一个tr  也就是一行
        td_l = i.find_all('td')    # td的列表 第三项是 带href
        # 只要把td_l里面的每一项赋值就好了  组成json数据  {}  插入到mongo
        # 再从mongo里面取href  访问  得到 生涯数据  再存回这个表
        # 再 把所有数据 存到 excel

        j_data = {}
        try:
            j_data['Rank'] = td_l[0].get_text().strip()
            j_data['Mark'] = td_l[1].get_text().strip()
            j_data['WIND'] = td_l[2].get_text().strip()
            j_data['Competitior'] = td_l[3].get_text().strip()
            j_data['DOB'] = td_l[4].get_text().strip()
            j_data['Nat'] = td_l[5].get_text().strip()
            j_data['Pos'] = td_l[6].get_text().strip()
            j_data['Venue'] = td_l[8].get_text().strip()
            j_data['Date'] = td_l[9].get_text().strip()

            j_data['href'] = td_l[3].find('a')['href']
        except:
            pass
        db.athletes.×××ert_one(j_data)

もし名前 == ' メイン ':
spider_iaaf()

BS4の使用状況:
BeautifulSoup、それはサードパーティのライブラリで使用する前にインストールする必要があります

pip ×××tall bs4

構成:
(1)〜CD
(2)MKDIR .pip
(3)〜VI / .pip / pip.conf
(4)、および内容の同一ウィンドウを編集

それは何BS4?

它的作用是能够快速方便简单的提取网页中指定的内容,给我一个网页字符串,然后使用它的接口将网页字符串生成一个对象,然后通过这个对象的方法来提取数据

BS4文法学習

ローカルファイルを通じて学ぶ、ネットワーク上でコードを書く
(1)ノード名のラベルの下に取得した
だけで、最初のノードの要件満たすために見つけることができる
テキストの内容を取得するには(2)と属性
プロパティを

soup.a.attrsすべての属性と値である辞書、返す
[「のhref」]のhref属性取得soup.aを

テキスト

soup.a.string
soup.a.textの
soup.a.get_text()
[注]ラベルとき、文字列はNoneに取得したラベル、プレーンテキストコンテンツの他の二つもあります

(3)の方法を見つけます

soup.find( 'A')
soup.find( 'A'、クラス_ = 'XXX')
soup.find( 'A'、タイトル= 'XXX')
soup.find( 'A'、ID = 'XXX')
soup.find(「A」、ID = re.compile(r'xxx「))
[注]見つけのみ、最初のラベルの要件を満たすために見つけることができる、彼はオブジェクトを返さ

(4)find_all

それは、リスト、要件を満たしているすべてのオブジェクトのリストを返します
soup.find_all( 'A')
soup.find すべて( 'A'を、クラス = '王')
soup.find_all( 'A'、re.compileのID =を( r'xxx '))
二つの要件を満たす前soup.find_all(' A」、限界= 2)が抽出されます

おすすめ

転載: blog.51cto.com/14259167/2409354