整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Python|簡(jiǎn)單幾行代碼提取html文件中全部指定標(biāo)簽內(nèi)的文本

          有以下文件html.html:

          想要提取全部標(biāo)簽<h4></h4>內(nèi)的文本,可使用如下Python代碼:

          import re

          with open("html.html",'rU') as strf:

          ....str = strf.read()

          res = r'(?<=<h4>).*?(?=</h4>)'

          li = re.findall(res,str)

          with open("new.txt","w") as wstr:

          ....for s in li:

          ........wstr.write(s)

          ........wstr.write("\r\n")

          ........print(s,'\r\n')

          正則表達(dá)式r'(?<=<h4>).*?(?=</h4>)中括號(hào)部分屬于向后向前查找,相當(dāng)于字符串作為邊界進(jìn)行查找。

          運(yùn)行后會(huì)將標(biāo)簽<h4></h4>內(nèi)的文本提取到文件new.txt:

          -End-

          信我或關(guān)注微信號(hào):獅范課,回復(fù):學(xué)習(xí),獲取免費(fèi)學(xué)習(xí)資源包。

          如有以下文件html.html:



          想要提取全部標(biāo)簽<h4></h4>內(nèi)的文本,可使用如下Python代碼:

          import re

          with open("html.html",'rU') as strf:

          ....str = strf.read()

          res = r'(?<=<h4>).*?(?=</h4>)'

          li = re.findall(res,str)

          with open("new.txt","w") as wstr:

          ....for s in li:

          ........wstr.write(s)

          ........wstr.write(" ")

          ........print(s,' ')

          正則表達(dá)式r'(?<=<h4>).*?(?=</h4>)中括號(hào)部分屬于向后向前查找,相當(dāng)于字符串作為邊界進(jìn)行查找。

          運(yùn)行后會(huì)將標(biāo)簽<h4></h4>內(nèi)的文本提取到文件new.txt:


          來源網(wǎng)絡(luò),侵權(quán)聯(lián)系刪除

          私信我或關(guān)注微信號(hào):獅范課,回復(fù):學(xué)習(xí),獲取免費(fèi)學(xué)習(xí)資源包。

          取網(wǎng)頁(yè)源代碼——Requests 工具包

          在我們提取網(wǎng)絡(luò)信息之前,我們必須將網(wǎng)頁(yè)的源代碼進(jìn)行提取,Requests工具包現(xiàn)在可以說是最好用和最普及的靜態(tài)網(wǎng)頁(yè)爬蟲工具,它是由大神Kenneth Reitz所搭建的。在Requests的官方介紹里,Requests所遵守的哲學(xué)理念是:

          1.Beautiful is better than ugly. (美勝過丑)

          2.Explicit is better than implicit.(清晰勝過隱匿)

          3.Simple is better than complex.(簡(jiǎn)單勝過復(fù)雜)

          4.Complex is better than complicated.(復(fù)雜勝過繁瑣)

          5.Readability counts.(可讀性很重要)

          Requests工具包的使用非常簡(jiǎn)單,最主要使用的函數(shù)為requests.get(url),其中參數(shù)url就是我們想提取源代碼的網(wǎng)頁(yè),再通過requests.get(url).text將頁(yè)面轉(zhuǎn)換為字符串,就可以供我們使用了。

          信息提取——Xpath

          我們普通的網(wǎng)頁(yè)一般都是XML文檔格式,當(dāng)我們想提取里面的內(nèi)容時(shí),我們需要借助Xpath來分解其中的格式,提取我們想要的內(nèi)容。在了解Xpath之前我們需要知道四個(gè)基本概念:節(jié)點(diǎn)、元素、屬性、文本 。我們來看一個(gè)例子:

          <?xml version="1.0" encoding="ISO-8859-1"?>
          ?
           
          ?
          <bookstore>
          ?
           
          ?
          <book>
          ?
           <title>Harry Potter</title>
          ?
           <author>J K. Rowling</author>
          ?
           <year>2005</year>
          ?
           <price>29.99</price>
          ?
          </book>
          ?
           
          ?
          </bookstore>
          ?
          

          這就是一個(gè)網(wǎng)頁(yè)的源碼,其中 <bookstore> 是文檔節(jié)點(diǎn), <author>J K. Rowling</author> 是元素節(jié)點(diǎn), lang="en" 是屬性節(jié)點(diǎn)。 J K. Rowling 、2005 和29.99是文本(文本通常就是我們想爬取的內(nèi)容)。

          實(shí)例分享——爬取豆瓣電影的信息

          接下來我們做一個(gè)很簡(jiǎn)單的實(shí)例分享,我們想爬取在豆瓣網(wǎng)上的電影《超時(shí)空同居》的導(dǎo)演和演員信息。

          首先我們找到電影的URL:

          右鍵點(diǎn)擊看網(wǎng)頁(yè)的源代碼 view page source(或者可以進(jìn)入開發(fā)者模式(insepect)):

          接下來我們就進(jìn)入網(wǎng)頁(yè)源代碼了,我們想要搜集的信息就在源代碼里,只用輸入關(guān)鍵字就可以查看到,比如這里我們輸入’雷佳音’就定位到了我們想要尋找的位置:

          接下來我們就需要分析TML的格式了,例如我們要找到所有的主演:

          大家可以看到有一個(gè)普遍的規(guī)律:主演的名字所對(duì)應(yīng)的節(jié)點(diǎn)名都為a,屬性都為rel="v:starring",這樣我們就可以很輕易的用xpath的語法定位到擁有這個(gè)元素的節(jié)點(diǎn),然后將所有的結(jié)果找出。

          同理,導(dǎo)演的名字所對(duì)應(yīng)的節(jié)點(diǎn)名為a,屬性都為rel=" v:directedBy",我們同樣可以通過這個(gè)定位找到相應(yīng)的文本:

          具體的代碼如下:

          import requests
          ?
          from lxml import etree
          ?
           
          ?
           
          ?
          url='https://movie.douban.com/subject/27133303/?from=showing' #輸入我們的url
          ?
          get = requests.get(url).text # get(url) 得到我們的網(wǎng)頁(yè), text將源網(wǎng)頁(yè)轉(zhuǎn)化為字符串
          ?
           
          ?
           
          ?
          selector = etree.HTML(get) # 將源碼轉(zhuǎn)換為xpath可以識(shí)別的TML格式
          ?
           
          ?
           
          ?
          info = {} #字典用于儲(chǔ)存信息
          ?
          info['電影'] = selector.xpath('//title/text()')[0].strip() # 定位電影名字
          ?
          info['導(dǎo)演']=selector.xpath('//a[@rel="v:directedBy"]/text()') # 定位導(dǎo)演名字
          ?
          info['演員']=selector.xpath('//a[@rel="v:starring"]/text()') # 定位演員名字
          ?
          print(info)
          

          最后我們得到一個(gè)字典集的結(jié)果:

          {'電影': '超時(shí)空同居 (豆瓣)', '導(dǎo)演': ['蘇倫'], '演員': ['雷佳音', '佟麗婭', '張衣', '于和偉', '王正佳', '陶虹', '李念', '李光潔', '楊玏', '范明', '徐崢', '楊迪', '方齡', '陳昊']}
          

          實(shí)例分享2——爬取帶有json格式豆瓣電影的信息

          首先,json是一種輕量級(jí)的數(shù)據(jù)交換格式,它簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。

          在我們爬蟲的過程中,我們有時(shí)候可以在開發(fā)者模式返回的網(wǎng)頁(yè)里找到完整的json格式的數(shù)據(jù),這時(shí)候我們就可以運(yùn)用requests包里的json函數(shù)將爬取到的原文本轉(zhuǎn)化格式,從而方便我們提取內(nèi)容。我們還是拿豆瓣電影舉例:

          這是點(diǎn)擊分類后我們看到的電影信息,假如我們想爬取這些電影的信息,我們可以點(diǎn)擊右鍵進(jìn)入開發(fā)者模式(inspector)。

          在打開開發(fā)者模式之后一定要記得刷新一次,否則不會(huì)顯示之前接收到的頁(yè)面信息。然后我們選擇右邊標(biāo)簽的network,下面再點(diǎn)擊XHR選項(xiàng),我們就會(huì)看到一個(gè)返回的網(wǎng)頁(yè),雙擊它。

          上圖就是打開后的json文件,由于我的電腦下載了json插件的緣故,它的格式要更清晰(使用Chrome瀏覽器的同學(xué)可以進(jìn)入Chrome商店下載Juan Ramón JSON Beautifier Chrome插件)。Json文件其實(shí)也可以被理解為是一個(gè)大的字典,里面有很多層小的字典和列表,我們找到j(luò)son網(wǎng)頁(yè)后只需要用requests變成json格式即可方便的提取信息。

          代碼如下:


          主站蜘蛛池模板: 高清一区二区三区视频| 中文字幕在线无码一区| 精品人妻一区二区三区四区| 国产丝袜视频一区二区三区| 秋霞日韩一区二区三区在线观看| 黄桃AV无码免费一区二区三区 | 一区二区三区无码高清| 亚洲熟妇无码一区二区三区导航| 一区二区三区人妻无码| 国产成人精品一区二区三区| 日本一道一区二区免费看| 亚洲宅男精品一区在线观看| 中文字幕一区二区人妻性色| 激情内射亚州一区二区三区爱妻| 成人毛片无码一区二区| 亚洲国产激情在线一区| 久久亚洲日韩精品一区二区三区| 亚洲乱码国产一区三区| 国偷自产av一区二区三区| 波多野结衣一区二区三区aV高清| 亚洲爽爽一区二区三区| 亚洲国产成人久久一区WWW | 激情综合丝袜美女一区二区| 国产成人久久一区二区不卡三区| 亚洲av永久无码一区二区三区 | 日韩精品一区二区亚洲AV观看| 国产伦精品一区二区三区| 亚洲色欲一区二区三区在线观看| 美女一区二区三区| 一区二区三区国产精品 | 中文字幕无线码一区2020青青| 精品亚洲AV无码一区二区三区| 免费av一区二区三区| 99久久综合狠狠综合久久一区| 亚洲午夜精品一区二区| 国内精品一区二区三区东京| 欧美成人aaa片一区国产精品| 日韩精品免费一区二区三区| 日韩精品一区二区三区不卡 | 久久国产精品免费一区二区三区| 久久99精品免费一区二区|