Pythonの爬虫類コード:

代表的なアプリケーション:

#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、コンテンツ)
他:
ブレーク

 

おすすめ

転載: www.cnblogs.com/soft2408/p/10962386.html