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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用xpath来爬图

發(fā)布時間:2025/7/25 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用xpath来爬图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
# xpath語法可參考http://www.w3school.com.cn/xpath/xpath_syntax.asp
# 本博客引用于https://zhuanlan.zhihu.com/something-python?topic=Python# coding:utf-8 import requests from lxml import html import os import timedef header(referer):headers = {'Host': 'i.meizitu.net','Pragma': 'no-cache','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6','Cache-Control': 'no-cache','Connection': 'keep-alive','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/59.0.3071.115 Safari/537.36','Accept': 'image/webp,image/apng,image/*,*/*;q=0.8','Referer': '{}'.format(referer),}return headers# 獲取主頁列表, 解析 html 的話最好使用html.fromstring(),它有xpath函數(shù),可用于定位元素。 def getPage(pageNum):baseUrl = 'http://www.mzitu.com/page/{}'.format(pageNum)selector = html.fromstring(requests.get(baseUrl).content)urls = []for i in selector.xpath('//ul[@id="pins"]/li/a/@href'):urls.append(i)print(i)return urls# 圖片鏈接列表, 標題 # url是詳情頁鏈接 def getPiclink(url):sel = html.fromstring(requests.get(url).content)# 圖片總數(shù),xpath 表達式應該返回元素的話,總是返回一個數(shù)組,即使只有一個元素;其中@class表示屬性class;last()函數(shù)表示最后一個a標簽total = sel.xpath('//div[@class="pagenavi"]/a[last()-1]/span/text()')[0]# 標題title = sel.xpath('//h2[@class="main-title"]/text()')[0]# 文件夾格式dirName = u"【{}P】{}".format(total, title)# 新建文件夾os.mkdir(dirName)n = 1for i in range(int(total)):# 每一頁try:link = '{}/{}'.format(url, i+1)s = html.fromstring(requests.get(link).content)# 圖片地址在src標簽中jpgLink = s.xpath('//div[@class="main-image"]/p/a/img/@src')[0]# print(jpgLink)# 文件寫入的名稱:當前路徑/文件夾/文件名filename = '%s/%s/%s.jpg' % (os.path.abspath('.'), dirName, n)print(u'開始下載圖片:%s 第%s張' % (dirName, n))#"wb+" 以二進制寫方式打開,可以讀、寫文件, 如果文件不存在,創(chuàng)建該文件with open(filename, "wb+") as jpg:jpg.write(requests.get(jpgLink, headers=header(jpgLink)).content)n += 1except:pass#下面一行代碼的作用:文件作為腳本直接執(zhí)行才會被執(zhí)行下面代碼,而import到其他腳本中是不會被執(zhí)行的,http://www.dengfeilong.com/post/60.html if __name__ == '__main__':pageNum = input(u'請輸入頁碼:')p = getPage(pageNum)for e in p:print(e)getPiclink(e)# lxml的報錯time.sleep(2)# 執(zhí)行的時候用python3, 并且要安裝pip install lxml requests #虛擬環(huán)境中裝python3 #sudo apt-get install python-pip #sudo apt-get install python-virtualenv #安裝本地虛擬環(huán)境管理工具 #mkdir ~/django # 創(chuàng)建目錄 #cd ~/django virtualenv venv #在~/django目錄下,創(chuàng)建一個venv的虛擬環(huán)境 #source venv/bin/activate #開啟虛擬環(huán)境

  

轉(zhuǎn)載于:https://www.cnblogs.com/regit/p/8529214.html

總結(jié)

以上是生活随笔為你收集整理的用xpath来爬图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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