6.21自我總結 一.爬取鬥圖網 1.摘要 2.爬取代碼 ...
6.21自我總結
一.爬取鬥圖網
1.摘要
使用xpath匹配規則查找對應信息文件
將請求偽裝成瀏覽器
Referer 防跨域請求
2.爬取代碼
#導入模塊
import requests
#爬取網址
url = 'http://www.doutula.com/'
#偽裝成成瀏覽器請求
#找到request200,200代表請求成功的裡面的內容,按F12裡面找
'''
Referer: http://www.doutula.com/ Referer為防跨域請求,我看了下圖片都是這個所有也可以不加上去,這個簡單來說就是你只能通過這個網址來找到圖片,如果他和url不同我們也把他加入再hearders裡面,和下麵保存一起
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
'''
#編程字典,為了把我們請求偽裝成瀏覽器
hearders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',}
response = requests.get(url,headers=hearders) #hearders是請求頭,body是請求主體
#成功拿到響應
#查找的內容
'''
data-original="http://ww4.sinaimg.cn/bmiddle/9150e4e5gy1g48gluqdp6j203c03ct92.jpg"
'''
#我們用xpath進行查找
#我們去頁面找,他對應的xpath
img_xpath = './/img/@data-original'
#解析
from lxml.html import etree
#把爬取的內容變成html格式
html = etree.HTML(response.text) #我們請求下來的內容要以text格式
#把xpath的匹配規則丟進去
img_url = html.xpath(img_xpath)
#print(img_url)
#保存文件
#創建個文件夾
import os
#創建當前文件夾位置一個img文件夾
img_file_path = os.path.join(os.path.dirname(__file__),'img') #獲得文件夾名
if not os.path.exists(img_file_path): #沒有文件夾名創建文件夾
os.mkdir(img_file_path)
#把圖片保存進該文件夾
count = 1 #用於計數
for img in img_url:
img_path = os.path.join(img_file_path,f'第{count}張.jpg') #創建圖片名稱
with open(img_path,'wb') as fw:
#獲取圖片的二進位形式
img_response = requests.get(img)
img_response = img_response.content
#寫入文件
fw.write(img_response)
count +=1