1. 程式人生 > >萌新xpath的爬蟲,用著很舒服

萌新xpath的爬蟲,用著很舒服

擴展性 xpath tree 編輯器 () png 圖片編碼 進制 trident

我用的是Pycharm編輯器,3.5的python。首先給大家看看源碼與成果
#####@Time:2018/10/25
br/>首先給大家看看源碼與成果
#####@Time:2018/10/25
import requests
from lxml import etree
headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}
html = requests.get("http://tu.duowan.com/tu", headers=headers).text
xpath_url = etree.HTML(html)
picture_url = xpath_url.xpath("//ul[@id=‘pic-list‘]/li/a/img/@src")
for i in picture_url:
picture_code = i[40:-4]
with open("./picture/%s.jpg" % picture_code, "wb") as file:
file.write(requests.get(i).content)

技術分享圖片

import requests
from lxml import etree
首先兩行導入兩個庫,為了接下來可以使用requests與xpath,不多解釋。

headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}
這一行是為了給爬蟲加一個頭,讓服務器認為自己是一個頭,接下來會被調用。

html = requests.get("http://tu.duowan.com/tu", headers=headers).text
requests.get(url).text的用法,獲取源碼,很常用,為了獲得源碼

xpath_url = etree.HTML(html)
picture_url = xpath_url.xpath("//ul[@id=‘pic-list‘]/li/a/img/@src")

第一行是為了將源碼轉換為xpath可以識別的格式,很重要,新人很容易忘記,導致後面出錯。第二行就是常規的xpath語法了。
想學可以進入下面這個鏈接看看http://www.w3school.com.cn/xpath/index.asp

for i in picture_url:
picture_code = i[40:-4]
with open("./picture/%s.jpg" % picture_code, "wb") as file:
file.write(requests.get(i).content)
第一行就是簡單的for循環,隨便看看書或者教程都可以。
第二行是字符串的截取,為了獲得圖片的非同一標識符。你可以選擇任何方式命名,看個人喜好了。
第三行with open() as f:結構,打開一個文件並且作為變量賦值給f。open("./picture/%s.jpg" % picture_code, "wb")是打開當前目錄的picture目錄,這個目錄要線創建。當然你也可以用這行代碼一起實現.os.makedirs(‘./picture‘),但是你還得導入os模塊,會復雜一點,當然很好用,看個人喜好。如果是一次爬取東西很多很推薦,特別是需要創建很多不同的目錄去創建東西的時候,可擴展性比較好。
創建以圖片編碼為名字的文件設置為wb可寫如二進制代碼格式,因為圖片很多都是二進制格式。
第四行就是簡單的文件寫入了,寫入requests.get(i).content內容,如果想好看一點可以在前面加上一個picture = requests.get(i).content,後面就可以直接file.write(picture)。都是個人喜好,但是註意不要忘記加上get(i)後面這個content,如果不加的話,picture等於一個返回值
興許是200,這是對的,也可能其他錯誤返回值。
open用法想學可以參考下面這個鏈接http://www.runoob.com/python/python-func-open.html

萌新xpath的爬蟲,用著很舒服