python项目之站长素材爬取
目錄
一、學(xué)習(xí)資源
二、知識(shí)點(diǎn)介紹
1、xpath使用
??2、xpath基本語(yǔ)法
?3、案例演示
三、項(xiàng)目詳細(xì)講解?
1、分析
?2、步驟
????????(1)請(qǐng)求對(duì)象定制
? ? ? ? (2)獲取響應(yīng)數(shù)據(jù)
? ? ? ? (3)下載數(shù)據(jù)
?四、源代碼
一、學(xué)習(xí)資源
????????尚硅谷Python爬蟲教程小白零基礎(chǔ)速通(含python基礎(chǔ)+爬蟲案例)_嗶哩嗶哩_bilibili???這位老師講的很有激情,并知識(shí)點(diǎn)和邏輯清晰,強(qiáng)烈推薦
二、知識(shí)點(diǎn)介紹
1、xpath使用
安裝詳情請(qǐng)參考往期文章:
xpath安裝與下載_前景-CSDN博客一、下載安裝連接如下鏈接:https://pan.baidu.com/s/1jYaugFBjxxYyXJWCQ_R5Rw提取碼:9d5u二、安裝①打開chrome瀏覽器②點(diǎn)擊右上角小圓點(diǎn)③更多工具④擴(kuò)展程序⑤拖拽xpath文件插件到擴(kuò)展程序中⑥如果crx文件失效,需要將后綴修改為zip⑦再次拖拽⑧關(guān)閉瀏覽器重新打開⑨ctra+shift+x⑩出現(xiàn)小黑框...https://blog.csdn.net/qq_41404557/article/details/122567674安裝lxml庫(kù)_前景-CSDN博客一、找到python的安裝位置二、打開命令行窗口,進(jìn)入文件夾的位置,安裝到scripts文件夾里面如果出現(xiàn)如下圖,則安裝成功https://blog.csdn.net/qq_41404557/article/details/122567976
?2、xpath基本語(yǔ)法
?3、案例演示
# coding=utf-8 from lxml import etree#xpath解析 #(1)解析本地文件 etree.parse #(2)解析服務(wù)器文件 response.read().decode('utf-8')****** etree.HTML()#xpath解析本地文件 tree = etree.parse('070_解析_xpath的基本使用.html')#tree.xpath('xpath路徑')#查找ul下面的li #li_list = tree.xpath('//ul/li/text()')#查找所有有id的屬性的li標(biāo)簽 #text()獲取標(biāo)簽中的內(nèi)容 #li_list = tree.xpath('//ul/li[@id]/text()')#找到id為l1的li標(biāo)簽 注意引號(hào)的問(wèn)題 單引號(hào)里面的字符串要加雙引號(hào) #li_list = tree.xpath('//ul/li[@id="l1"]/text()')#查找到id為l1的li標(biāo)簽的class的屬性值 # li = tree.xpath('//ul/li[@id="l1"]/@class')#查詢id中包含l的li標(biāo)簽 #li_list = tree.xpath('//ul/li[contains(@id,"l")]/text()')#查詢id的值以l開頭的li標(biāo)簽 #li_list = tree.xpath('//ul/li[starts-with(@id,"c")]/text()')#查詢id為l1和class為c1的 #li_list = tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()')li_list = tree.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="l2"]/text()') #判斷列表的長(zhǎng)度 print(li_list) print(len(li_list))三、項(xiàng)目詳細(xì)講解?
1、分析
??????????①首先要獲取url,但是因?yàn)橐@取前十頁(yè)的數(shù)據(jù),url是一個(gè)變量,通過(guò)對(duì)網(wǎng)頁(yè)的檢查可以發(fā)現(xiàn)網(wǎng)頁(yè)的url有規(guī)律。
????????
?2、步驟
????????(1)請(qǐng)求對(duì)象定制
? ? ? ? ? ? ? ?解決了url的問(wèn)題之后,請(qǐng)求對(duì)象的定制就變得簡(jiǎn)單了,就是把之前的內(nèi)容進(jìn)行了封裝
? ? ? ? (2)獲取響應(yīng)數(shù)據(jù)
? ? ? ? ? ? ? ? 相應(yīng)的獲取響應(yīng)數(shù)據(jù)也是把之前的代碼進(jìn)行封裝
????????
? ? ? ? (3)下載數(shù)據(jù)
? ? ? ? ? ? ? ? ? ?下載圖片需要用到urllib庫(kù),此時(shí)需要圖片的地址和文件的名字
????????????????
? ? ? ? ? ? ? ? 首先解析獲取到的服務(wù)器文件,然后通過(guò)xpath去查找圖片的地址和文件的名字
? ? ? ? ? ? ? ? 然后通過(guò)遍歷的方式下載圖片
?
? ? ? ? ?文件內(nèi)容:
?四、源代碼
# coding=utf-8 #(1)請(qǐng)求對(duì)象的定制 #(2)獲取網(wǎng)頁(yè)源碼 #(3)下載#需求 下載的是前十頁(yè)的圖片 #https://sc.chinaz.com/tupian/qinglvtupian.html #https://sc.chinaz.com/tupian/qinglvtupian_page.html import urllib.request from lxml import etreedef create_request(page):#請(qǐng)求對(duì)象定制if (page == 1):url = 'https://sc.chinaz.com/tupian/qinglvtupian.html'else :url = 'https://sc.chinaz.com/tupian/qinglvtupian_'+str(page)+'.html'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}request = urllib.request.Request(url=url,headers=headers)return requestdef get_content(request):#獲取網(wǎng)頁(yè)源碼response = urllib.request.urlopen(request)content = response.read().decode('utf-8')return contentdef down_load(content):#下載#下載圖片#urllib.request.urlretrieve('圖片地址','文件的名字')tree = etree.HTML(content)#解析服務(wù)器文件name_list = tree.xpath('//div[@id="container"]//a/img/@alt')#一般設(shè)計(jì)圖片的網(wǎng)站都會(huì)進(jìn)行懶加載 所以這里的圖片地址為src2src_list = tree.xpath('//div[@id="container"]//a/img/@src2')for i in range(len(name_list)):name = name_list[i]src = src_list[i]url = 'https:' + srcurllib.request.urlretrieve(url=url,filename='./loveImg/' +name + '.jpg')if __name__ == '__main__':start_page = int(input('請(qǐng)輸入起始頁(yè)碼'))end_page = int(input('請(qǐng)輸入結(jié)束頁(yè)碼'))for page in range(start_page,end_page+1):#(1)請(qǐng)求對(duì)象定制request = create_request(page)#獲取網(wǎng)頁(yè)源碼content = get_content(request)#(3)下載down_load(content)? ? ? ? ?整體思路可以參考往期文章:
爬蟲項(xiàng)目之豆瓣電影排行榜前10頁(yè)_前景-CSDN博客豆瓣電影排行榜前十頁(yè)數(shù)據(jù)抓取(詳細(xì)分析講解)https://blog.csdn.net/qq_41404557/article/details/122600743
總結(jié)
以上是生活随笔為你收集整理的python项目之站长素材爬取的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python语言数据挖掘python语言
- 下一篇: python 字典查询比列表快_Pyth