日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > HTML >内容正文

HTML

HTML文本解析

發(fā)布時(shí)間:2023/12/20 HTML 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML文本解析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HTML文本解析

一、Xpath解析數(shù)據(jù)

1、解析庫(kù)lxml安裝

(1)windows下安裝:

pip install lxml

如果沒(méi)有報(bào)錯(cuò),說(shuō)明安裝成功。

如果出錯(cuò),例如:提示缺少libxml2,則可以采用wheel方式安裝??梢缘揭韵骆溄酉螺d對(duì)應(yīng)wheel(網(wǎng)址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml),找到與Python版本和系統(tǒng)對(duì)應(yīng)的lxml版本,如:Windows64、Python3.6,就選擇lxml?3.8.0?cp36?cp36m?win_amd64.whl,將其下載到本地。最后使用pip安裝:

pip install lxml?3.8.0?cp36?cp36m?win_amd64.whl

(2)Linux下安裝:

pip install lxml

(3)Mac下安裝:

pip install lxml

如果出現(xiàn)錯(cuò)誤,可以執(zhí)行如下命令安裝必要的庫(kù);

xcode-select –install

注意:XPath是一個(gè)解析語(yǔ)言,只有安裝解析庫(kù)才可以對(duì)網(wǎng)頁(yè)數(shù)據(jù)進(jìn)行解析;

2、XPath的一些用法

(1)標(biāo)簽內(nèi)容的提取:

eg:

name = oneSelector.xpath("div/div[@class = \"info\"]/div[@class = \"hd\"]/a/span[1]/text()")[0]

注:

1、在標(biāo)簽的選擇里面,選擇到目標(biāo)標(biāo)簽,在標(biāo)簽的后面加上/text()*,即獲得目標(biāo)標(biāo)簽的文本內(nèi)容;*

2、若要獲取目標(biāo)標(biāo)簽屬性的內(nèi)容,則需要選擇到目標(biāo)標(biāo)簽,然后在標(biāo)簽的后面加上/@屬性值;**

3、xpath獲取的標(biāo)簽內(nèi)容都是以列表的形式存在,若需要對(duì)獲取內(nèi)容處理(字符串),則需要在獲取到的列表標(biāo)簽中加上[第幾個(gè)]*,得到的內(nèi)容為字符串類(lèi)型。*

二、BeautifulSoup解析數(shù)據(jù)

1、安裝BeautifulSoup

pip install beautifulsoup4

這個(gè)包兼容Python2和Python3

2、解析器

默認(rèn)用lxml,因?yàn)樾矢?/p>

數(shù)據(jù)持久化存儲(chǔ)

一、將數(shù)據(jù)保存于文件

1、數(shù)據(jù)保存于文件中

保存數(shù)據(jù)最簡(jiǎn)單的方法就是使用Python的文件操作函數(shù),將數(shù)據(jù)保存于csv、txt等文件中,Python的文件操作函數(shù)主要有:

  • f.open(): 打開(kāi)文件
  • f.write(): 寫(xiě)入文件
  • f.close(): 關(guān)閉文件

當(dāng)配合with一起使用時(shí),我們無(wú)需關(guān)心文件關(guān)閉的問(wèn)題,系統(tǒng)自動(dòng)關(guān)閉,如:

with open(“douban.csv”) as f:

二、使用MySQL持久化數(shù)據(jù)

1、MySQL介紹

MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),MySQL數(shù)據(jù)庫(kù)系統(tǒng)使用最常用的數(shù)據(jù)庫(kù)管理語(yǔ)言–結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)進(jìn)行數(shù)據(jù)庫(kù)管理。它應(yīng)用及其廣泛,它開(kāi)源免費(fèi)、高效、可移植性好。像阿里巴巴、去哪兒、騰訊等知名互聯(lián)網(wǎng)公司都有在使用MySQL數(shù)據(jù)庫(kù)。

2、Python連接MySQL的基本格式

oneMovie = [name, score, num]allMovieslist.append(oneMovie)for i in allMovieslist:# print(i)# 連接到本地MySQL數(shù)據(jù)庫(kù)# 新版數(shù)據(jù)連接要加最后一個(gè)參數(shù) pymysql.cursors.DictCursor表示字典類(lèi)型 pymysql.cursors.Cursor表示數(shù)組類(lèi)型conn = pymysql.connect(host='localhost', user='root', passwd='123456', database='douban',cursorclass=pymysql.cursors.DictCursor)# 獲取游標(biāo)cursor = conn.cursor()try:cursor.execute("insert into movies(name, star, num1) values ('%s', %s, %s)"%(i[0], float(i[1]), int(i[2])))conn.commit()except Exception as e:print(e)# 回滾conn.rollback()conn.close()

Selenium語(yǔ)法

1、聲明瀏覽器對(duì)象

Selenium支持很多瀏覽器,如Chrome、Firefox、IE、Opera、Safari等,還有Android、BlackBerry等手機(jī)端的瀏覽器。selenium.webdriver 模塊提供了所有瀏覽器的驅(qū)動(dòng)(WebDriver),可以生成不同瀏覽器的對(duì)象。

下面是聲明不同瀏覽器對(duì)象的實(shí)現(xiàn)代碼:

from selenium import webdriverdriver = webdriver.Chrome() #聲明Chrome瀏覽器對(duì)象 driver = webdriver.ie() #聲明ie瀏覽器對(duì)象 driver = webdriver.firefox() #聲明firefox瀏覽器對(duì)象 driver = webdriver.phantomjs()#聲明phantomjs瀏覽器對(duì)象 driver = webdriver.safari() #聲明safari瀏覽器對(duì)象

2、訪(fǎng)問(wèn)頁(yè)面

可以使用get方法實(shí)現(xiàn)頁(yè)面的訪(fǎng)問(wèn):

driver.get("url") # 請(qǐng)求頁(yè)面

3、獲取頁(yè)面代碼

使用driver的page_source屬性回去頁(yè)面的HTML代碼:

# 獲取代碼 HTML = driver.page_source

4、定位元素

當(dāng)獲取到HTML代碼后,就需要定位到HTML的各個(gè)元素,以便提取數(shù)據(jù)或者對(duì)該元素執(zhí)行諸如輸入、點(diǎn)擊操作。WebDriver 提供了大量的方法查詢(xún)頁(yè)面中的節(jié)點(diǎn),這些方法形如:find_element_by_*。

以下為Selenium查找單個(gè)節(jié)點(diǎn)的方法。

drivr.find_element_by_id:# 通過(guò)ID查找 drivr.find_element_by_name:# 通過(guò)NAME查找 drivr.find_element_by_xpath:# 通過(guò)xpath選擇器查找 drivr.find_element_by_link_text:# 通過(guò)鏈接的文本查找(完全匹配) drivr.find_element_by_partial_link_text:# 通過(guò)鏈接的文本查找(部分匹配) drivr.find_element_by_tag_name:# 通過(guò)標(biāo)簽名查找 drivr.find_element_by_class_name:# 通過(guò)CLASS查找 drivr.find_element_by_css_selector:# 通過(guò)css選擇器查找

5、頁(yè)面交互

Selenium可以模擬用戶(hù)對(duì)頁(yè)面執(zhí)行一系列操作,如輸入數(shù)據(jù)、清除數(shù)據(jù)、單擊按鈕等。以下代碼實(shí)現(xiàn)了定位到搜索框后,清空搜索框中的文字,輸入“iphone”,回車(chē)的功能。

input = driver.find_element_by_id("searchKeywords")#查找節(jié)點(diǎn) input.clear()#清除輸入框中默認(rèn)文字 input.send_keys("iphone")#輸入框中輸入“iphone” input.send_keys(Keys.RETURN)#回車(chē)功能

6、執(zhí)行JavaScript

Selenium并未提供所有的頁(yè)面交互操作方法,例如爬蟲(chóng)中用得最多的下拉頁(yè)面(用于加載更多內(nèi)容)。Selenium提供了execute_script()方法,用于執(zhí)行JS,這樣我們就可以通過(guò)JS代碼實(shí)現(xiàn)這些操作了。以下代碼實(shí)現(xiàn)了將頁(yè)面下拉到底部的功能。

driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')

總結(jié)

以上是生活随笔為你收集整理的HTML文本解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。