<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
lxml 是 Python 的一個庫,用於解析和呈現 XML 和 HTML。它支援多種內建和第三方 XML 和 HTML 標記,例如 <a>
,<img>
,<form>
,<ul>
,<li>
,<ol>
,<dl>
,<dt>
,<dd>
等。lxml 還支援使用正規表示式來解析和呈現 XML 和 HTML。
本文我們就介紹lxml的使用方法,我們使用lxml獲取我們想要的資料。
首先,我們要進行資料來源分析,知道我們的需求是什麼?
我們都玩過4399小遊戲,我們想獲取遊戲名稱和遊戲連結,並儲存下來。首先,我們匯入相關的庫檔案。
import csv import requests from lxml import etree
接下來,我們可以傳送請求,獲取網頁原始碼,程式碼如下。
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
這段程式碼是一個 Python 的 requests
模組的範例程式碼,用於從 https://www.4399.com/flash_fl/2_1.htm
這個網站上獲取資料並將其轉換為 HTML 格式。
首先,我們定義了一個 url
變數,它包含了要從網站上獲取資料的 URL。然後,我們使用 headers
字典來設定請求頭,包括 user-agent
頭部,用於指定瀏覽器的 User-Agent 資訊。
接下來,我們使用 requests.get()
函數來傳送一個 HTTP GET 請求,並將 headers
字典作為請求頭傳遞給它。這個函數會返回一個 Response
物件,我們可以使用 res.encoding
屬性來獲取請求的編碼方式,並將其設定為 res.apparent_encoding
,以便在輸出 HTML 時使用相同的編碼方式。
最後,我們將請求的編碼方式設定為瀏覽器的預設編碼方式,以便在輸出 HTML 時使用相同的編碼方式。
接下來,我們用xpath解析資料。我們用開發者工具定位到標籤位置。
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
元素,並將它們儲存在 lis
變數中。
最後,我們使用 for
迴圈遍歷 lis
,並使用 li.xpath
方法來獲取每個 li
元素的 a
元素的 href
和 alt
屬性,並將它們儲存在 href
和 title
變數中。 我們執行結果之後,我們還要對連結進行拼接。
接下來就是儲存資料,先寫入標頭檔案。
f = open('4399小遊戲.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=['遊戲名稱', '遊戲網站']) csv_writer.writeheader()
這段程式碼中,我們首先使用 Python 的 open()
函數開啟了一個名為 "4399小遊戲.csv" 的檔案,檔案模式為 a
,表示追加模式。
然後,我們使用 Python 的 csv
模組建立了一個名為 csv_writer
的 DictWriter
物件,並使用 writeheader()
方法來寫入表頭。
最後,我們使用 write()
方法向檔案中寫入資料,資料內容為一個字典物件。
這段程式碼的作用是將一個字典物件寫入到檔案中,其中包含了遊戲名稱和遊戲網站兩個欄位的資料。
需要注意的是,在寫入資料之前,我們需要使用 csv.DictWriter()
函數來建立一個 DictWriter
物件,並使用 fieldnames
引數來指定欄位名稱。此外,我們還需要使用 newline=''
引數來避免在 Windows 系統中出現換行符問題。 '''
dit = { '遊戲名稱': title, '遊戲網站': data_url, } csv_writer.writerow(dit)
'''
以上就是Python實戰使用XPath採集資料範例解析的詳細內容,更多關於Python XPath採集資料的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45