代表的なアプリケーション:
#1 Baiduの要求を介し家にリクエストを送信し、データ収集Baiduの家。
#インポートライブラリを要求します
インポート要求
URLパス要求とクエリパラメータ#
URL = "http://www.baidu.com"
#リクエスト・ヘッダー
ヘッダー= { "ユーザエージェント" の "Mozilla / 5.0(Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 74.0.3729.131サファリ/ 537.36"
}
GETリクエストを送信#、それはレスポンスオブジェクトを返します。
応答= requests.get(URL)
#応答の内容を見ます
印刷(response.text)
#2。は、データBaiduのクエリページを取得するために、リクエストによってBaiduのホームへの問い合わせ「テストデータ」にリクエストを送信します。
##インポート要求ライブラリ
#インポート要求
URLパスやクエリパラメータは##リクエスト
#URL = "http://www.baidu.com/s"
#のParam = { "WD": "試験データ"}
##リクエストヘッダ
#ヘッダー= { "ユーザエージェント" の "Mozilla / 5.0(Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 74.0.3729.131サファリ/ 537.36"
#}
##、GET要求を送信するレスポンスオブジェクトを返します
#応答= requests.get(URL、paramsは= PARAM、ヘッダー=ヘッダ)
##応答の内容を見ます
#プリント(response.text)
#3。は、ローカルwww.baidu.comに画像を保存します。
#インポート要求
##写真URLを
#URL = "https://www.baidu.com/img/bd_logo1.png"
##レスポンス自体が絵で、その理由は、バイナリクラスです
#応答= requests.get(URL)
##プリント(response.content)
## +バイナリファイルを書き込み用にオープン
オープンと#( 'baidu.png'、 'WB')としてf:
バイナリ型の##書き込みrespone.contentバイト
#1 f.write(response.content)
と#4.requests要求ヘッダー
代表的なアプリケーション2:
lxmlのインポートetreeから
#1.xmlライブラリ
印刷( "1.xmlライブラリー")
テキスト= '' 'の<div>
<UL>
<LIクラス= "項目-0"> <a href="link1.html">第一个</a>の</ LI>
<LIクラス= "項目1"> <a href="link2.html">第項目する</a> </ LI>
<LIクラス= "項目-0"> <a href="link5.html"> A属性</a>の</ LI>
</ UL>
</ div> ''」
#(1)etree.formstring()関数は、テキスト解析ノードを読み出し
プリント( "(1)formstring()関数は、テキスト解析ノードを読み取り")
印刷(「テキストはElementオブジェクトとなって解析するformstring()関数:」)
fromstr = etree.fromstring(テキスト)
印刷( "formstring()テキストを解析する機能は、Elementオブジェクトとなりました:"、fromstr)
印刷(「Elementオブジェクトは、テキストを解析されます:」)
resultfromstr = etree.tostring(fromstr、エンコード= 'UTF-8')
印刷(「Elementオブジェクトは、テキストの後に解決される:」、resultfromstr)
#(2)etree.HTML()関数は、テキスト解析ノードを読み出し
プリント( "(2)etree.HTML()関数は、テキスト解析ノードを読み取り")
印刷(「テキストはElementオブジェクトとなって解析するetree.HTML()関数:」)
HTML = etree.HTML(テキスト)
印刷( "etree.HTML()テキストを解析する機能は、Elementオブジェクトとなりました:"、HTML)
resulthtml = etree.tostring(HTML、エンコード= 'UTF-8')
印刷(「Elementオブジェクトは、テキストの後に解決される:」、resulthtml)
#2.lxmlライブラリのfind()メソッド、にfindAll()メソッド、interfind()メソッド
印刷( "2.lxmlライブラリのfind()メソッド、にfindAll()メソッド、interfind()メソッド")
印刷( "HTMLノードを探す:" ""、html.findを())
印刷( "ボディノードを見つける見つける:"、html.find( "./体"))
印刷( "ボディ/ divのノードを見つける見つける:"、html.find( "./ボディ/ DIV"))
印刷( "ボディ/ DIV / ulのノードを見つける見つける:"、html.find( "./ボディ/ DIV / UL"))
印刷( "ボディ/ DIV / UL /李ノードを見つける見つける:"、html.find( "./ボディ/ DIV / UL /李"))
印刷( "/本体/ DIV / UL / Liのノードを見つける見つける:"、html.find( "./体/ DIV / UL /リー/ A"))
印刷( "ボディ/ DIV / ulのノードの結果がリストで見つけるのfindAll:"、html.findall( "./ボディ/ DIV / UL"))
印刷(「イテレータの使用クエリ:」)
liList = html.iterfind( "./ボディ/ DIV / UL /李")
印刷(「クエリの出力イテレータ後:」、終了=「」)
liList中のLiのために:
プリント(li.xpath( "./ /テキスト() ")[0]、端="")
印刷( "\ n")を
#3.xpathの使用状況
印刷( "3.xpathの使用")
プリント( "(1).xpath使用上選択ノード")
印刷( "XPathの使用を選択したHTMLノード:"、html.xpath() "")
プリント( "XPathの選択利用体ノード:"、html.xpath( "./体"))
プリント( "ボディ/ DIVノード選択のXPathの使用:"、html.xpath( "./体/ DIV"))
プリント( "ボディ/ DIV / UL / Liのノード選択のXPathの使用:"、html.xpath( "./体/ DIV / UL /李"))
印刷( "の位置に関係なく、XPathの使用量は '//' / divのノードを選択:"、html.xpathを( "// DIV"))
印刷( "XPathの使用状況 '..' 李選択した親ノード:"、html.xpath( "//のli / .."))
印刷( "(2)使用[プロパティ]を選択し.xpath @")
印刷( "//選択/ @ href属性 'プロパティ@' のXPathの使用方法:"、html.xpath( "// / HREF @"))
プリント( "(3).xpath使用上選択述語")
印刷( "XPathの使用状況 '@属性値=' を選択//李[する@クラス= 'アイテム-0']述語は、以下から選択される:"、html.xpath( "//のli [の@クラス= 'アイテム-0']") )
印刷( "(4)未知のノードの選択を使用し.xpath")
印刷は、( "XPathの使い方 'UL / *' ul要素の下のすべての要素を選択する:"、html.xpath( "// UL / *"))
印刷(:、html.xpath( "//のli [@ *]") "の全ての要素のLiとXPathの使用プロパティ")
印刷(「ルート要素の下のすべてのノードのXPathの使用:」、html.xpath(「//ノード()」))
プリント(「(5)パスの使用の番号を選択.xpath」)
印刷( "XPathの使用状況 '|' いくつかのパスを選択してください:"、html.xpath( "//のli [の@クラス= 'アイテム-0'] | //李[の@クラス= 'アイテム-1']"))
163グラブインスタントニュース
インポート要求
lxmlのインポートetreeから
URL = "https://news.163.com/domestic/"
応答= requests.get(URL)
response.encoding = "2312"
#TXT = response.text
HTML = etree.HTML(response.text)
liList = html.xpath( "// divの[クラス@ = 'today_news'] / UL /李")
印刷( "163 ------------今日はお勧めします")
liList中のLiのために:
プリント(li.xpath( "./ /テキスト() ")[0]、" \ N")
プリント(li.xpath( "HREF @ /を./ ")[0]、" \ N")
印刷( "ニュース速報163 ------------")
liList2 = html.xpath( "// divの[@クラス= 'MT23 mod_jsxw'] / UL /李")
liList中のLiのために:
プリント(li.xpath( "./ /テキスト() ")[0]、" \ N")
プリント(li.xpath( "HREF @ /を./ ")[0]、" \ N")
都市建設大学のウェブサイトのニュースセクションに塔のステートカレッジの下にニュース一覧をクロール#4。
印刷(「都市建設大学のウェブサイトのニュースセクションの塔ステートカレッジの下4.クロールニュースリスト」)
インポート要求
lxmlのインポートetreeから
応答= requests.get( "http://www.gzccc.edu.cn/xwzx/cjyw.htm")
response.encoding = "UTF-8"
HTML = etree.HTML(response.text)
newList = html.xpath( "// [@クラス= 'c18915']")
#プリント(newList)
newList中のLiのために:
タイトル= li.xpath( "./テキストは()")[0]得られた把持#xpathリストであり、[0]が最初の読み取り要素0で追加
HREF = li.xpath( "./@ HREF")[0]
時間= li.xpath( "../../ TD [3] /スパン/テキスト()")[0]
#1、F =オープン( "gzccc.txt"、 'A'、エンコード= "UTF-8")
#1 f.write(タイトル+ HREF +時間+ "\ nを")
#1 f.close()
オープンと( "gzccc.txt"、 'A'、エンコード= "UTF-8")Fとして得ました:
#バイナリ型のrespone.contentバイトを書きます
f.write(タイトル+ HREF +時間+ "\ n" は)
プリント(タイトル、HREF、時間)
代表的なアプリケーション3:
インポート要求
lxmlのインポートetreeから
デフget_data(URL):
RESP = requests.get(URL)
resp.encoding = "UTF-8"
etree.HTML(resp.text)を返します
デフprintContent(pagCnt、コンテンツ):
= 1
li_list = content.xpath( "// divの[クラス@ = 'artic_t_1のny_news_lb'] / UL /李")
li_list中のLiのために:
タイトル= li.xpath( "./ /テキスト()")
HREF = li.xpathは、( "/ HREF @ ./します")
時間= li.xpath( "./スパン/テキスト()")
印刷(pagCnt * 20 + NUM、タイトル、時間、HREF)
NUM = NUM + 1
F =オープン( "1.TXT"、 "A"、エンコード= "UTF-8")
f.write(STR(pagCnt * 20 + NUM)+ STR(タイトル)+ STR(時間)+ STR(HREF)+ "\ n" は)
pagCnt = 0
str_url = "http://www.hnjmxy.cn/xwdt/xyxw.htm"
コンテンツ= get_data(str_url)
真の中に:
NEXTPAGE = content.xpath( "// [@クラス= '次']")
pagCnt = pagCnt + 1
印刷( "--------这是NEXTPAGE - "、NEXTPAGE)
LEN(NEXTPAGE)の場合= 0!:
HREF = NEXTPAGE [0] .xpath( "./@ HREF")[0]
テキスト= NEXTPAGE [0] .xpath( "./テキスト()")[0]
#プリント(HREF)
#印刷(テキスト)#は、テキストの次のページを表示します
STR(HREF).find( "/")> 0の場合:
str_url = "http://www.hnjmxy.cn/xwdt/" + HREF#は、このフォームのhref xyxw / 2.htmです
他:
str_url = "http://www.hnjmxy.cn/xwdt/xyxw/" + HREF#のHREFこのフォームが2.htmある場合
印刷(str_url)
コンテンツ= get_data(str_url)
printContent(pagCnt、コンテンツ)
他:
ブレーク
#------------------------------------------------- ------------
ジャーナリズムの#クロール広州都市建設学校
インポート要求
lxmlのインポートからetree
デフget_data(URL):
RESP = requests.get(URL)
resp.encoding = "UTF-8"
を返すetree.HTML(resp.text)
URL = "http://www.gzccc.edu .CN / xwzx.htm」
DEF printContent(pagCnt、コンテンツ):
NUM = 1
li_list = content.xpath( "//テーブル[@クラス= 'winstyle18915'] / TR")
li_listにおけるLiの場合:
タイトル= li.xpath (」[2] / /テキスト()./td ")
HREF = li.xpath(" ./ TD [2] / / HREF @ ")
時間= li.xpath(" ./ TDを[3] /スパン/テキスト() ")
プリント(pagCnt * 12 + NUM、タイトル、時間、HREF)
NUM = NUM + 1つの
#1 F =オープン(" E:\\ shiye \\ gzccc.txt」、 "A"、エンコーディング= "UTF-8")
#1 f.write(STR(pagCnt * 12 + NUM)+ STR(タイトル[0])+ STR(時間[0])+ STR(HREF [0])+ "\ n")
pagCnt = 0
str_url = "HTTP ://www.gzccc.edu.cn/xwzx.htm」
コンテンツ= get_data(str_url)
真中:
NEXTPAGE = content.xpath( "//" [= '次へ'クラス@])
pagCnt = pagCnt + 1枚の
印刷( "--------这是nextpage--"、NEXTPAGE)
の場合LEN(NEXTPAGE)= 0:!
のhref = NEXTPAGE [0] .xpath( "./@のhref")[0]
のテキスト= NEXTPAGE [0] .xpath( "./テキストが() ")[0]
であればSTR(HREF).find("/")> 0:
str_url = "http://www.gzccc.edu.cn/" + HREF HREF是xyxw / 2.htm这种形式如果#
:他
のhref是2如果str_url = "http://www.gzccc.edu.cn/xwzx/" + HREF#。HTMこのフォーム
印刷(str_url)
コンテンツ= get_data(str_url)
printContent(pagCnt、コンテンツ)
他:
ブレーク