本期,边肖将给大家带来一个Python爬行嘉园数据能否证明其不可靠的实例分析。文章内容丰富,从专业角度进行分析和叙述。看完这篇文章,希望你能有所收获。
10-10: 10今天看到一个关于“在嘉园找对象靠谱吗?】,其中关注人数1903人,被浏览次数1940753次,355个答案大部分不靠谱。用Python爬嘉园的数据能证明不靠谱吗?
我翻了几页,找到了一个search_v2.php的链接,它的返回值是一个不规则的json字符串,里面包括昵称、性别、婚姻、匹配条件等等。
通过获取url参数,总计240116捕获了10,000页数据。
要安装的模块是openpyxl,用于过滤特殊字符。
#coding:utf-8
导入csv
importjson
导入请求
from openpyxl . cell . cellimportillegal _ CHARACTERS _ RE
进口
line_index=0
deffetchURL(url):
标题={ 0
接受' :'*/*,
用户代理' : ' Mozilla/5.0(windowsnt 10.0;Win64x64)applebwebkit/537.36(KHTML,likeGecko)Chrome/86 . 0 . 4240 . 75 safari/537.36 ',
cookie ' : ' guider _ quick _ search=on;accessID=20201021004216238222PHPSESID=11117 cc 60 F4 dcafd 131 b 69d 542987 a 46;is _ search v2=1;SESSION _ HASH=8f 93 eeb 87 a 87 af 01198 f 418 aa 59 bccad9 DBE 5c 13;user _ access=1;Qs _ lvt _ 336351=1603457224QS _ PV _ 336351=4391272815204901400,304352944961503700 '
}
r=requests.get(url,headers=headers)
r.raise_for_status()
returnr.text.encode('gbk ',' ignore ')。解码(' gbk ','忽略')
defpareshtml(html):
html=html.replace('\\ ','')
html=INCLUDE _ CHARTERS _ RE . sub(r ' ',html)
s=json.loads(html,strict=False)
全局线索引
userInfo=[]
铌
sp; for key in s['userInfo']:
line_index = line_index + 1
a = (key['uid'],key['nickname'],key['age'],key['work_location'],key['height'],key['education'],key['matchCondition'],key['marriage'],key['shortnote'].replace('\n',' '))
userInfo.append(a)
with open('sjjy.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerows(userInfo)
if __name__ == '__main__':
for i in range(1, 10000):
url = 'http://search.jiayuan.com/v2/search_v2.php?key=&sex=f&stc=23:1,2:20.30&sn=default&sv=1&p=' + str(i) + '&f=select&listStyle=bigPhoto'
html = fetchURL(url)
print(str(i) + '页' + str(len(html)) + '*********' * 20)
parseHtml(html)
二,去重
在处理数据去掉重复的时候发现有好多重复的,还以为是代码写的有问题呢,查了好久的bug最后才发现网站在100页上只有数据有好多重复的,下面两个图分别是110页数据和111页数据,是不是有很多熟面孔。
110页数据
111页数据
过滤重复后的数据只剩下 1872 了,这个水分还真大
def filterData(): filter = [] csv_reader = csv.reader(open("sjjy.csv", encoding='gbk')) i = 0 for row in csv_reader: i = i + 1 print('正在处理:' + str(i) + '行') if row[0] not in filter: filter.append(row[0]) print(len(filter))
上述就是小编为大家分享的Python爬取世纪佳缘的数据是否能证明它不靠谱的示例分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/49724.html