访问世纪某缘网站,通过搜索可以查看很多小姐姐(小哥哥)的头像。而且这些头像不受限制,可以查看,不过要想看大图,就需要注册和登录了。本文仅仅对头像感兴趣,因而不需要注册。
使用Python爬虫可以很轻松的爬取成千上万的用户头像。
话不多说,上代码。注意header和cookies可以根据自己浏览器访问记录设定。
import requestsimport reimport urllibmy_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 = 1my_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 + 1my_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 ====
(仅供学习使用)