最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)戰(zhàn)使用XPath采集數(shù)據(jù)示例解析

 更新時(shí)間:2023年04月18日 11:13:00   作者:極客飛虎  
這篇文章主要為大家介紹了Python實(shí)戰(zhàn)之使用XPath采集數(shù)據(jù)實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>

lxml

lxml 是 Python 的一個(gè)庫(kù),用于解析和呈現(xiàn) XML 和 HTML。它支持多種內(nèi)置和第三方 XML 和 HTML 標(biāo)記,例如 <a>,<img><form>,<ul><li><ol>,<dl><dt><dd> 等。lxml 還支持使用正則表達(dá)式來解析和呈現(xiàn) XML 和 HTML。

本文我們就介紹lxml的使用方法,我們使用lxml獲取我們想要的數(shù)據(jù)。

發(fā)送請(qǐng)求

首先,我們要進(jìn)行數(shù)據(jù)來源分析,知道我們的需求是什么?

明確需求:

  • 明確采集網(wǎng)站是什么?
  • 明確采集數(shù)據(jù)是什么?

我們都玩過4399小游戲,我們想獲取游戲名稱和游戲鏈接,并保存下來。首先,我們導(dǎo)入相關(guān)的庫(kù)文件。

import csv
import requests
from lxml import etree

接下來,我們可以發(fā)送請(qǐng)求,獲取網(wǎng)頁(yè)源代碼,代碼如下。

url = 'https://www.4399.com/flash_fl/2_1.htm'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
res = requests.get(url, headers=headers)
res.encoding = res.apparent_encoding

這段代碼是一個(gè) Python 的 requests 模塊的示例代碼,用于從 https://www.4399.com/flash_fl/2_1.htm 這個(gè)網(wǎng)站上獲取數(shù)據(jù)并將其轉(zhuǎn)換為 HTML 格式。

首先,我們定義了一個(gè) url 變量,它包含了要從網(wǎng)站上獲取數(shù)據(jù)的 URL。然后,我們使用 headers 字典來設(shè)置請(qǐng)求頭,包括 user-agent 頭部,用于指定瀏覽器的 User-Agent 信息。

接下來,我們使用 requests.get() 函數(shù)來發(fā)送一個(gè) HTTP GET 請(qǐng)求,并將 headers 字典作為請(qǐng)求頭傳遞給它。這個(gè)函數(shù)會(huì)返回一個(gè) Response 對(duì)象,我們可以使用 res.encoding 屬性來獲取請(qǐng)求的編碼方式,并將其設(shè)置為 res.apparent_encoding,以便在輸出 HTML 時(shí)使用相同的編碼方式。

最后,我們將請(qǐng)求的編碼方式設(shè)置為瀏覽器的默認(rèn)編碼方式,以便在輸出 HTML 時(shí)使用相同的編碼方式。

解析數(shù)據(jù)

接下來,我們用xpath解析數(shù)據(jù)。我們用開發(fā)者工具定位到標(biāo)簽位置。

html_data = etree.HTML(res.text)
lis = html_data.xpath('//*[@class="bre m15"]//ul/li')
for li in lis:
    href = li.xpath('./a/@href')[0]
    title = li.xpath('./a/img/@alt')[0]

接下來,我們使用 html_data.xpath 方法來解析 HTML 文檔中的 ul 和 li 元素,并將它們存儲(chǔ)在 lis 變量中。

最后,我們使用 for 循環(huán)遍歷 lis,并使用 li.xpath 方法來獲取每個(gè) li 元素的 a 元素的 href 和 alt 屬性,并將它們存儲(chǔ)在 href 和 title 變量中。 我們運(yùn)行結(jié)果之后,我們還要對(duì)鏈接進(jìn)行拼接。

保存數(shù)據(jù)

接下來就是保存數(shù)據(jù),先寫入頭文件。

f = open('4399小游戲.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['游戲名稱', '游戲網(wǎng)站'])
csv_writer.writeheader()

這段代碼中,我們首先使用 Python 的 open() 函數(shù)打開了一個(gè)名為 "4399小游戲.csv" 的文件,文件模式為 a,表示追加模式。

然后,我們使用 Python 的 csv 模塊創(chuàng)建了一個(gè)名為 csv_writer 的 DictWriter 對(duì)象,并使用 writeheader() 方法來寫入表頭。

最后,我們使用 write() 方法向文件中寫入數(shù)據(jù),數(shù)據(jù)內(nèi)容為一個(gè)字典對(duì)象。

這段代碼的作用是將一個(gè)字典對(duì)象寫入到文件中,其中包含了游戲名稱和游戲網(wǎng)站兩個(gè)字段的數(shù)據(jù)。

需要注意的是,在寫入數(shù)據(jù)之前,我們需要使用 csv.DictWriter() 函數(shù)來創(chuàng)建一個(gè) DictWriter 對(duì)象,并使用 fieldnames 參數(shù)來指定字段名稱。此外,我們還需要使用 newline='' 參數(shù)來避免在 Windows 系統(tǒng)中出現(xiàn)換行符問題。 '''

dit = {
    '游戲名稱': title,
    '游戲網(wǎng)站': data_url,
}
csv_writer.writerow(dit)

'''

以上就是Python實(shí)戰(zhàn)使用XPath采集數(shù)據(jù)示例解析的詳細(xì)內(nèi)容,更多關(guān)于Python XPath采集數(shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?if?else語(yǔ)句對(duì)縮進(jìn)的要求

    Python?if?else語(yǔ)句對(duì)縮進(jìn)的要求

    這篇文章主要介紹了Python?if?else語(yǔ)句對(duì)縮進(jìn)的要求,前面的一篇文章展示了選擇結(jié)構(gòu)的三種基本形式,并給出了實(shí)例演示,這篇文章基于上一篇內(nèi)容繼續(xù)對(duì)Python?if?else語(yǔ)句對(duì)縮進(jìn)進(jìn)行描述,需要的小伙伴可以參考一下
    2022-03-03
  • Python語(yǔ)言描述隨機(jī)梯度下降法

    Python語(yǔ)言描述隨機(jī)梯度下降法

    這篇文章主要介紹了Python語(yǔ)言描述隨機(jī)梯度下降法,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • python入門while循環(huán)語(yǔ)句理解學(xué)習(xí)

    python入門while循環(huán)語(yǔ)句理解學(xué)習(xí)

    這篇文章主要介紹了python入門while循環(huán)語(yǔ)句理解學(xué)習(xí),文中附含詳細(xì)圖文示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • python 解壓pkl文件的方法

    python 解壓pkl文件的方法

    今天小編就為大家分享一篇python 解壓pkl文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • PyCharm如何設(shè)置Console控制臺(tái)輸出自動(dòng)換行

    PyCharm如何設(shè)置Console控制臺(tái)輸出自動(dòng)換行

    這篇文章主要介紹了PyCharm如何設(shè)置Console控制臺(tái)輸出自動(dòng)換行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 在django中實(shí)現(xiàn)choices字段獲取對(duì)應(yīng)字段值

    在django中實(shí)現(xiàn)choices字段獲取對(duì)應(yīng)字段值

    這篇文章主要介紹了在django中實(shí)現(xiàn)choices字段獲取對(duì)應(yīng)字段值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • scrapy框架中的items文件夾的用法詳解

    scrapy框架中的items文件夾的用法詳解

    這篇文章主要介紹了scrapy框架中的items文件夾的用法詳解,在Scrapy框架中,items文件夾是用來存放定義數(shù)據(jù)模型的Item類的地方,Item類描述了要從網(wǎng)頁(yè)中提取的數(shù)據(jù)的結(jié)構(gòu)和字段,通過使用Item類,我們可以更方便地組織和處理爬取到的數(shù)據(jù),需要的朋友可以參考下
    2023-10-10
  • Python實(shí)現(xiàn)數(shù)字圖像處理染色體計(jì)數(shù)示例

    Python實(shí)現(xiàn)數(shù)字圖像處理染色體計(jì)數(shù)示例

    這篇文章主要為大家介紹了Python實(shí)現(xiàn)數(shù)字圖像處理染色體計(jì)數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • pandas刪除某行或某列數(shù)據(jù)的實(shí)現(xiàn)示例

    pandas刪除某行或某列數(shù)據(jù)的實(shí)現(xiàn)示例

    本文主要介紹了pandas刪除某行或某列數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 解決python3 urllib 鏈接中有中文的問題

    解決python3 urllib 鏈接中有中文的問題

    今天小編就為大家分享一篇解決python3 urllib 鏈接中有中文的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評(píng)論

读书| 诸暨市| 武城县| 郓城县| 大名县| 仪陇县| 盐山县| 茌平县| 崇明县| 泌阳县| 长汀县| 娄烦县| 荣昌县| 西乌珠穆沁旗| 古田县| 长岛县| 澄城县| 海伦市| 松滋市| 洛南县| 吴忠市| 宁强县| 景谷| 潍坊市| 丽江市| 桃园市| 嘉义县| 黄大仙区| 名山县| 雅安市| 金溪县| 抚州市| 龙岩市| 新竹市| 济南市| 西贡区| 香港| 米易县| 嘉禾县| 大洼县| 辉县市|