點贊再看,養成習慣
目錄
展示成果:
分析網站
總結下:
技術分析
注:圖片下載可運行
遇到的困難
未解決的問題:
因為想要爬取一些福利圖片,花了差不多1個半小時的時間寫了這個圖片的爬蟲,雖然還是有些問題,但是能爬下來圖片就夠了,下面開始聊一下,
展示成果:

注:這只是一頁的資料,網站總共有262 頁哦
分析網站
目標網站:
游民星空的游民福利,基本上是一些美女圖片,LSP喜歡,廢話不多說,開始吧
Url 如下:https://www.gamersky.com/ent/xz/
打開網址,選擇自己想要查看的,右鍵 -> 檢查,就可以直接查看到對應的html 代碼,
href 就是對應的鏈接
分析下url找個每個詳情頁的地址
![]()

進入到詳情頁查看每個圖片的url
![]()

最終找到圖片的詳細地址

總結下:
-
對首頁進行分析,找到詳情頁的url
-
對詳情頁進行分析,找到圖片的url
-
打開url,找到圖片
-
每個詳情頁的的第一頁就是url ,第二頁就是url_2.shtml
技術分析
之前沒寫過爬蟲,所以技術上沒有什么經驗,但是爬蟲領域python是最火的,所以果斷放棄Java,選擇python,有段時間沒寫python了,有點生疏了,管他吶,不會就查,開干!!!
選擇的IDE 是pycharm ,因為習慣了idea
python 是選擇了3.9的版本,隨便下的
使用的庫是BeautifulSoup 和 requests
直接上代碼:
import time
import requests
from bs4 import BeautifulSoup
def get_content(url):
try:
user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'
response = requests.get(url, headers={'User-Agent': user_agent})
response.raise_for_status() # 如果回傳的狀態碼不是200, 則拋出例外;
response.encoding = response.apparent_encoding # 判斷網頁的編碼格式, 便于respons.text知道如何解碼;
except Exception as e:
print("爬取錯誤")
else:
print(response.url)
print("爬取成功!")
return response.content
def save_img(img_src):
if img_src is None:
return
try:
print(img_src)
urlArr = img_src.split('?')
if len(urlArr) == 2:
url = urlArr[1]
else:
url = urlArr[0]
headers = {"User-Agent": 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0'}
# 注意 verify 引數設定為 False ,不驗證網站證書
requests.packages.urllib3.disable_warnings()
res = requests.get(url=url, headers=headers, verify=False)
data = res.content
filePath = "D:\\pic\\"+ str(int(time.time())) +".jpg"
with open(filePath, "wb+") as f:
f.write(data)
except Exception as e:
print(e)
def downloadImg(sigleArticle):
if sigleArticle is None:
return
# 實體化soup物件, 便于處理;
soup = BeautifulSoup(sigleArticle, 'html.parser')
imgList = soup.find_all('p',class_ ="GsImageLabel")
for img in imgList:
atag = img.find('a')
if atag:
save_img(atag['href'])
def getAllArticle(content):
# 實體化soup物件, 便于處理;
soup = BeautifulSoup(content, 'html.parser')
divObj = soup.find_all('div', class_="tit")
for item in divObj:
link = item.find('a')
if link:
articleUrl = link['href']
sigleArticle = get_content(articleUrl)
downloadImg(sigleArticle)
arr = articleUrl.split(".shtml")
for i in range(2,10):
url = arr[0]+"_" +str(i)+ ".shtml"
sigleArticle = get_content(url)
downloadImg(sigleArticle)
if __name__ == '__main__':
for i in range(2, 5):
print(i)
url = "https://www.gamersky.com/ent/xz/"
articleUrl = "https://www.gamersky.com/ent/202107/1406688.shtml"
content = get_content(url)
getAllArticle(content)
# singleArticle = get_content(articleUrl)
#
# downloadImg(singleArticle)
注:圖片下載可運行
遇到的困難
1.bs4 的安裝
在pycharm 中無法安裝,不知道什么情況,即使換了阿里的和清華的源依然不行,最后是在控制臺安裝
2.字串的拆分
字串的拆分的函式提示不好,不如Java方便
網站的字串存在一些不規律,也沒有深度探索
未解決的問題:
1.首頁的翻頁問題,現在只解決了首頁的下載,還需要研究
2.程式的一些警告沒有處理,直接無視了 requests.packages.urllib3.disable_warnings()
3.圖片網址的前半部分是否需要拆分的問題,在瀏覽器中可以查看,但是爬取的時候似乎有點問題,沒有深究
注意:爬蟲雖好,可不要多用,會浪費網站的服務器性能
常規福利





趕緊點贊,分享
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/289267.html
標籤:java
上一篇:【面經分享】位元組抖音Android客戶端3+1輪已通過
下一篇:Java 貪吃蛇簡易程式
