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