萌新xpath的爬蟲,用著很舒服
#####@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
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")
想學可以進入下面這個鏈接看看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的爬蟲,用著很舒服