查看完整版本: 關於爬蟲的小問題
頁: [1]

yoop123 發表於 2020-3-23 01:31 PM

關於爬蟲的小問題

本帖最後由 yoop123 於 2020-3-25 12:03 AM 編輯

我是一名爬蟲照片收集者,平時無聊就在網路上爬取各網站照片

有天我心血來潮決定爬伊莉會員的照片,結果發生了錯誤,如下

def img_parse(response):
    html = bsp(response.text,"html.parser")
    ig = 0
    personal_id = bsp.find_all(html,"div",{"id":r.compile(r'post_\d+')})
    if (os.path.exists(file_path)) == False:
        os.makedirs(file_path)
    for idx in personal_id:
        ig += 1
        avatar = bsp.find(idx,"div",{"class":"avatar"})
        photo = session.post(bsp.find(avatar,"img")['src'],data,headers = headers)
        print(photo)
        img_name = file_path + str(ig) + ".jpg"


        with open(img_name,'wb') as f:
            f.write(photo.content)


            f.flush()
        f.close()

    return print("ok")


我成功進入頁面且抓取到了照片的網址,但是進行請求後卻發生
ERRORThe requested URL could not be retrieved
令人痛心疾首,我一開始以為是圖片位址損壞,但後來發現有些照片直接訪問是可以看到的,但如果用request就只會跑到上面那個頁面,所以請大神們幫幫忙,可以解釋這到底是我的問題?還是網站本身的問題?

另外,我轉換了許多次的代碼請求,回應錯誤也從411跑到503,可能原因是我請求方法錯誤跟要求數過大,但解決這全部之後,依然保留了403的錯誤


之前沒說清楚,不過我也有加入header,如下

headers = {"Host": "www81.eyny.com",
"Origin": "*************",
"Referer": "**************************",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7",
"Cache-Control": "max-age=0",
"Connection": "keep-alive",
"Content-Length": "109",
"Content-Type": "application/x-www-form-urlencoded"}
data = {"agree": "yes",
"submit": "是,我已年滿18歲。Yes, I am."}

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

54041817 發表於 2020-3-23 04:05 PM

https://www.youtube.com/watch?v=9Z9xKWfNo7k&t=1265s

9:30 開始看看  我在想是網站防止機器人的機制  

kwj 發表於 2020-3-24 09:34 PM

感覺你好像連基本的網路知識都還不是太了解....
先問一下,你知道 403 代表什麼嗎?

yoop123 發表於 2020-3-24 11:58 PM

kwj 發表於 2020-3-24 09:34 PM static/image/common/back.gif
感覺你好像連基本的網路知識都還不是太了解....
先問一下,你知道 403 代表什麼嗎? ...

請求拒絕?是吧?
然而我在進行用戶登入時連結也被擋住了,嚴格說起來我也有根據網站要求的Network加入header,但那明顯不只擋住了爬蟲...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

kwj 發表於 2020-3-25 09:23 PM

本帖最後由 kwj 於 2020-3-25 09:30 PM 編輯

yoop123 發表於 2020-3-24 11:58 PM static/image/common/back.gif
請求拒絕?是吧?
然而我在進行用戶登入時連結也被擋住了,嚴格說起來我也有根據網站要求的Network加入head ...
403 代表的不只是請求拒絕。4xx 系列全都是請求拒絕的意思,而 403 代表的是權限不足。
所以問題是在於伺服器認為你代表的使用者不具備可以存取該頁面的權限,大多數狀況是你沒有正確地在 request 裡夾帶合法的驗證資訊。

以伊莉來說,就是你沒有帶 Cookie 給伺服器,或者你帶的 Cookie 是錯誤的,所以伺服器不認為你是具有足夠權限的用戶。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

yoop123 發表於 2020-3-30 09:10 PM

kwj 發表於 2020-3-25 09:23 PM static/image/common/back.gif
403 代表的不只是請求拒絕。4xx 系列全都是請求拒絕的意思,而 403 代表的是權限不足。
所以問題是在於伺 ...

感謝回復,我之後嘗試了幾次之後沒有找到必須的cookie,但我發現一個現象
就是每當我第一次訪問網站,用瀏覽器訪問該圖片時,通常都是可視的,但對網頁進行reload後
就出現了錯誤,是因為我重載之後把cookie弄不見了嗎?...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]