访问世纪某缘网站,通过搜索可以查看很多小姐姐(小哥哥)的头像。而且这些头像不受限制,可以查看,不过要想看大图,就需要注册和登录了。本文仅仅对头像感兴趣,因而不需要注册。

使用Python爬虫可以很轻松的爬取成千上万的用户头像。

话不多说,上代码。注意header和cookies可以根据自己浏览器访问记录设定。

import requests
import re
import urllib

my_url = "http://search.jiayuan.com/v2/search_v2.php"
my_header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"}
my_cookies = {"guider_quick_search":"on", "accessID":"20181213094914916362", "SESSION_HASH":"b1ef27371485bbf7ea817f39c404c23fd82f3d39", "PHPSESSID":"8f12d200f751a3f108aeb4ed3f50192b", "is_searchv2":"1"}

def get_img_url(img_url):
    return img_url.replace("\\","")

def downImage(url):
    outname = url.split("/")[-1]
    urllib.request.urlretrieve(url,outname)

def main(loc=32, age="18.33"): #设定搜索地点和年龄范围
    page = 1
    my_select = "1:" + str(loc) + ",2:" + str(age) +",23:1"
    my_data = {"sex":"f", "key":"", "stc": my_select, "sn":"default","sv":"1","p":str(page),"f":"search", "listStyle":"bigPhoto","pri_uid":"0", "jsversion":"v5"}
    rr = requests.post(url = my_url, headers = my_header, cookies = my_cookies, params = my_data)
    img_list = re.findall('image":"(http:.*?jpg)',rr.text)
    while all(x.endswith("avatar_p.jpg") for x in img_list):
        for img in img_list:
            i_url = get_img_url(img)
            downImage(i_url)
            print(i_url)
        page = page + 1
        my_data = {"sex":"f", "key":"", "stc": my_select, "sn":"default","sv":"1","p":str(page),"f":"search", "listStyle":"bigPhoto","pri_uid":"0", "jsversion":"v5"}
        rr = requests.post(url = my_url, headers = my_header, cookies = my_cookies, params = my_data)
        img_list = re.findall('image":"(http:.*?jpg)',rr.text)

if __name__ == "__main__":
    main()

(代码块可左右滑动)

通过post提交搜索条件,上述代码中通过my_data构造了搜索条件,其中几个关键的参数如下,即: “sex”:”f” -性别:女 “stc”:”1:32,2:18.30”: - 1表示省份,32代表江苏,你还可以设置成其他省份;2表示年龄范围,18.30表示年龄范围在18-30岁之间。 不过,不是所有的头像都可以查看,到一定页码之后,就需要注册查看了。 但是,能够查看的图像已经足够多了。 将其中的省份设为99,表示海外,短短一会时间,就下载了2000张头像。效果如下:

==== THE END ==== (仅供学习使用)