ライブラリの使用を要求します。
要求は、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)が抽出されます