电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Python爬蟲新手入門之初學(xué)lxml庫

瀏覽:133日期:2022-07-01 16:20:17
1.爬蟲是什么

所謂爬蟲,就是按照一定的規(guī)則,自動(dòng)的從網(wǎng)絡(luò)中抓取信息的程序或者腳本。萬維網(wǎng)就像一個(gè)巨大的蜘蛛網(wǎng),我們的爬蟲就是上面的一個(gè)蜘蛛,不斷的去抓取我們需要的信息。

2.爬蟲三要素 抓取 分析 存儲(chǔ)3.爬蟲的過程分析

當(dāng)人類去訪問一個(gè)網(wǎng)頁時(shí),是如何進(jìn)行的?

①打開瀏覽器,輸入要訪問的網(wǎng)址,發(fā)起請(qǐng)求。

②等待服務(wù)器返回?cái)?shù)據(jù),通過瀏覽器加載網(wǎng)頁。

③從網(wǎng)頁中找到自己需要的數(shù)據(jù)(文本、圖片、文件等等)。

④保存自己需要的數(shù)據(jù)。

對(duì)于爬蟲,也是類似的。它模仿人類請(qǐng)求網(wǎng)頁的過程,但是又稍有不同。

首先,對(duì)應(yīng)于上面的①和②步驟,我們要利用python實(shí)現(xiàn)請(qǐng)求一個(gè)網(wǎng)頁的功能。

其次,對(duì)應(yīng)于上面的③步驟,我們要利用python實(shí)現(xiàn)解析請(qǐng)求到的網(wǎng)頁的功能。

最后,對(duì)于上面的④步驟,我們要利用python實(shí)現(xiàn)保存數(shù)據(jù)的功能。

因?yàn)槭侵v一個(gè)簡(jiǎn)單的爬蟲嘛,所以一些其他的復(fù)雜操作這里就不說了。下面,針對(duì)上面幾個(gè)功能,逐一進(jìn)行分析。

4.如何用python請(qǐng)求一個(gè)網(wǎng)頁

作為一門擁有豐富類庫的編程語言,利用python請(qǐng)求網(wǎng)頁完全不在話下。這里推薦一個(gè)非常好用的類庫urllib.request。

4.1.抓取網(wǎng)頁

urllib庫使用

import urllib.request response = urllib.request.urlopen(’https://laoniu.blog.csdn.net/’)print(response.read().decode(’utf-8’))

這樣就可以抓取csdn我的主頁的html文檔

我們使用爬蟲就是需要在網(wǎng)頁中提取我們需要的數(shù)據(jù),接下來我們來學(xué)習(xí)抓取一下百度搜索頁的熱榜數(shù)據(jù)

Python爬蟲新手入門之初學(xué)lxml庫

4.2.如何解析網(wǎng)頁呢

使用lxml庫

lxml 是一種使用 Python 編寫的庫,可以迅速、靈活地處理 XML 和 HTML。

它支持 XML Path Language (XPath) 和 Extensible Stylesheet Language Transformation (XSLT),并且實(shí)現(xiàn)了常見的 ElementTree API。

安裝

windows下安裝

#pip方式安裝pip3 install lxml #wheel方式安裝 #下載對(duì)應(yīng)系統(tǒng)版本的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxmlpip3 install lxml-4.2.1-cp36-cp36m-win_amd64.whl

linux下安裝

yum install -y epel-release libxslt-devel libxml2-devel openssl-devel pip3 install lxml

環(huán)境/版本一覽:

開發(fā)工具:PyCharm 2020.2.3 python:3.8.54.3.編寫代碼

import urllib.requestfrom lxml import etree # 獲取百度熱榜url = 'https://www.baidu.com/s?ie=UTF-8&wd=1'# 我們?cè)谡?qǐng)求頭加入U(xiǎn)ser-Agent參數(shù),這樣可以讓服務(wù)端認(rèn)為此次請(qǐng)求是用戶通過瀏覽器發(fā)起的正常請(qǐng)求,防止被識(shí)別為爬蟲程序請(qǐng)求導(dǎo)致直接拒絕訪問req = urllib.request.Request(url=url, headers={ ’User-Agent’: ’User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36’})# 發(fā)起請(qǐng)求html_resp = urllib.request.urlopen(req).read().decode('utf-8')

到這里我們可以順利獲取百度的搜索頁面html文檔

我門需要看一下熱搜排行榜的標(biāo)簽元素在哪里

Python爬蟲新手入門之初學(xué)lxml庫

Python爬蟲新手入門之初學(xué)lxml庫

找到第一條 右鍵復(fù)制 XPath (后邊說XPath是什么)

Python爬蟲新手入門之初學(xué)lxml庫

我們需要了解并使用XPath,XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。

復(fù)制的內(nèi)容結(jié)果是: //*[@id='con-ar']/div[2]/div/div/table/tbody[1]/tr[1]

這xPath字符串 表示現(xiàn)在在html定位的位置就是熱點(diǎn)新聞第一行內(nèi)容

5.XPath常用規(guī)則 表達(dá)式 描述 nodename 選取此節(jié)點(diǎn)的所有子節(jié)點(diǎn) / 從當(dāng)前節(jié)點(diǎn)選取直接子節(jié)點(diǎn) // 從當(dāng)前節(jié)點(diǎn)選取子孫節(jié)點(diǎn) . 選取當(dāng)前節(jié)點(diǎn) .. 選取當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn) @ 選取屬性 * 通配符,選擇所有元素節(jié)點(diǎn)與元素名 @* 選取所有屬性 [@attrib] 選取具有給定屬性的所有元素 [@attrib=’value’] 選取給定屬性具有給定值的所有元素 [tag] 選取所有具有指定元素的直接子節(jié)點(diǎn) [tag=’text’] 選取所有具有指定元素并且文本內(nèi)容是text節(jié)點(diǎn) 6.繼續(xù)分析

那么我們要獲取所有的熱點(diǎn)新聞該怎么寫呢

繼續(xù)看網(wǎng)頁

Python爬蟲新手入門之初學(xué)lxml庫

可以看到所有的熱榜分別在三個(gè)<tbody>之下

修改一下剛才復(fù)制的XPath

//*[@id='con-ar']/div[2]/div/div/table/tbody[1]/tr[1] 改為 //*[@id='con-ar']/div[2]/div/div/table/tbody/tr

這樣XPath就會(huì)定位到這三個(gè)tbody下的所有tr元素內(nèi)容

我們繼續(xù)看一下tr是不是我們想要的內(nèi)容,展開一個(gè)tr看看

Python爬蟲新手入門之初學(xué)lxml庫

淦~還有一堆,,

這該怎么辦。我們需要拿到數(shù)據(jù)是 【標(biāo)題】 【訪問鏈接】 【熱度】,現(xiàn)在手里已經(jīng)拿到的是所有的tr元素

緊接著從tr下手 直接 拿到下面所有<a>標(biāo)簽的標(biāo)題與超鏈接

標(biāo)題的XPath: */a/@title 超鏈接的XPath: */a/@href

*表示匹配tr下的所有元素 /a是在*找到第一個(gè)a標(biāo)簽 @是屬性選擇器 title和href就是要選擇的素屬性了

還剩下個(gè)熱度,let‘s me 繼續(xù)操作,直接選擇tr下的第二個(gè)td XPath: td[2]

分析完畢,把完整的代碼貼出來

import urllib.requestfrom lxml import etree # 獲取百度熱榜 url = 'https://www.baidu.com/s?ie=UTF-8&wd=1'# 我們?cè)谡?qǐng)求頭加入U(xiǎn)ser-Agent參數(shù),這樣可以讓服務(wù)端認(rèn)為此次請(qǐng)求是用戶通過瀏覽器發(fā)起的正常請(qǐng)求,防止被識(shí)別為爬蟲程序請(qǐng)求導(dǎo)致直接拒絕訪問req = urllib.request.Request(url=url, headers={ ’User-Agent’: ’User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36’ })html_resp = urllib.request.urlopen(req).read().decode('utf-8')html = etree.HTML(html_resp)#初始化生成一個(gè)XPath解析對(duì)象_list = html.xpath('//*[@id=’con-ar’]/div[2]/div/div/table/tbody/tr')print(f'article count : {len(_list)}') for tr in _list: title = tr.xpath('*/a/@title')[0] href = tr.xpath('*/a/@href')[0] hot = tr.xpath('string(td[2])').strip() print(f'{hot}t{title}thttps://www.baidu.com{href}')

點(diǎn)擊運(yùn)行,程序啪就跑起來了,很快啊,數(shù)據(jù)全都過來了,我全都接住了,我笑了一下。

到此就完成了lxml xpath的基本使用,更詳細(xì)的xpath教程請(qǐng)看 :https://www.w3school.com.cn/xpath/index.asp

爬蟲三要素,抓取數(shù)據(jù)完成了,剩余的分析與存儲(chǔ)就先不說了

總結(jié)

到此這篇關(guān)于Python爬蟲新手入門之初學(xué)lxml庫的文章就介紹到這了,更多相關(guān)Python爬蟲入門之lxml庫內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 北京发电车出租-发电机租赁公司-柴油发电机厂家 - 北京明旺盛安机电设备有限公司 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 脑钠肽-白介素4|白介素8试剂盒-研域(上海)化学试剂有限公司 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 便携式高压氧舱-微压氧舱-核生化洗消系统-公众洗消站-洗消帐篷-北京利盟救援 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 焦作网 WWW.JZRB.COM| 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 水冷散热器_水冷电子散热器_大功率散热器_水冷板散热器厂家-河源市恒光辉散热器有限公司 | 福建自考_福建自学考试网| 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 商秀—企业短视频代运营_抖音企业号托管| SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 橡胶电子拉力机-塑料-微电脑电子拉力试验机厂家-江苏天源 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 污水处理设备,一体化泵站,一体化净水设备-「梦之洁环保设备厂家」 | 回转窑-水泥|石灰|冶金-巩义市瑞光金属制品有限责任公司 | 中央空调温控器_风机盘管温控器_智能_液晶_三速开关面板-中央空调温控器厂家 |