用爬蟲只會爬取前面的一部分,下拉的爬不出來

比如www.vmgirls.com


謝邀~不BB直接給代碼,

# for shisi
# time 2020.2.26

import requests

url = "https://www.vmgirls.com/wp-admin/admin-ajax.php"

payload = "append=list-homepaged=5action=ajax_load_postsquery=page=home"
headers = {
authority: "www.vmgirls.com",
pragma: "no-cache",
cache-control: "no-cache",
accept: "text/html, */*; q=0.01",
x-requested-with: "XMLHttpRequest",
user-agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
content-type: "application/x-www-form-urlencoded; charset=UTF-8",
origin: "https://www.vmgirls.com",
sec-fetch-site: "same-origin",
sec-fetch-mode: "cors",
referer: "https://www.vmgirls.com/",
accept-encoding: "gzip, deflate, br",
accept-language: "zh-CN,zh;q=0.9,und;q=0.8",
cookie: "__cfduid=db15bfa028f71d189ffa0c5ddf47b1d481582594282; Hm_lvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1582594284; Hm_lpvt_a5eba7a40c339f057e1c5b5ac4ab4cc9=1582594284; _ga=GA1.2.1131286326.1582594284; _gid=GA1.2.83351297.1582594284; _gat_gtag_UA_127463675_2=1",
postman-token: "14e3a70d-c1f6-08a5-f2ea-8b00e1a48d63"
}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)

改動paged=5 這個參數,就可以翻頁了,然後,從html取出圖片,難度不大吧,,


有贊在更新。。有5個贊,來更新咯

上面代碼是自動生成的,方法是:

四十不是十四:60秒GET小技能-爬蟲快速生成標準post代碼?

zhuanlan.zhihu.com圖標

如何分析的呢?你要堅信,頁面只要有東西出現在你面前,就一定是在某個時候下載到了你本地。因此,只有在你面前的,都是可以爬下來的。

然後抽取出獲取這個數據的請求,像文章裏扔到postman下,即可,

下載postman可用這個

https://www.urlteam.cn/2020/02/60%e7%a7%92get%e5%b0%8f%e6%8a%80%e8%83%bd-%e7%88%ac%e8%99%ab%e5%bf%ab%e9%80%9f%e7%94%9f%e6%88%90%e6%a0%87%e5%87%86post%e4%bb%a3%e7%a0%81/?

www.urlteam.cn圖標

https://www.urlteam.cn/wp-content/uploads/2020/02/postman7160.zip


用selenium相對麻煩和低效,下拉載入的數據其實就是做了分頁,我看你給的網站是有分頁介面的,比如「攝影寫真」這個裡面F12打開,只要不斷往下滑,找哪個每次都會重複出現的介面就行了。我箭頭的地方就是分頁介面,畫圈的地方是分頁參數,目前是第二頁。當然我只是花兩分鐘看了一下,具體能不能走通我不知道,只是給題主一個思路。

PS: 這個網站是真不錯


這種就是分析瀏覽器的網路訪問,

然後找到它的介面API的調用 。

直接用介面API訪問。

爬蟲本身是你的思考能力與分析能力的延續。

請多看看網路協議還有HTTP協議 相關的分析


遇到這種網站,首先第一反應,就是去找Ajax請求。你在下拉的時候,直接點擊XHR選項,分析它的請求參數以及響應的數據。

可以看到,它請求的就是admin-ajax.php,其中paged就是代表現在在第幾頁。

然後模擬它的請求,添加上對應的參數就可以了。


如果就一兩個網站,就分析流。如果很多,就用selenium、pyqeteer等


推薦閱讀:
相關文章