[Python 爬虫学习笔记] 爬取唧唧堂网站上的用户信息

。 测试交流1 114字数 2142阅读模式

目标网站

http://www.jijitang.com/ # 研究人 UGC 社区

爬取内容

所有研究人的个人信息文章源自玩技e族-https://www.playezu.com/191577.html

网站介绍

唧唧堂是一个从 2012 年开始运营的研究人 UGC 社区,社区用户包括高校的学生、学者、行业研究员等,经过 5 年的积累,社区内已经有 6.5 万高学历、多背景学科的研究人。
唧唧堂创始人 宣悠悠 拥有美国圣塔克拉拉大学信息系统硕士学位,曾在硅谷工作和学习三年,具有超过 6 年的 IT 和互联网工作经验;另一位联合创始人拥有武汉大学金融硕士和学士学位,曾任资产管理公司研究院、金融 IT 上市公司互联网金融产品总监。文章源自玩技e族-https://www.playezu.com/191577.html

完整代码

import requests
import csv
import time
import pymysql
#新建csv文件
csvf = open('jijitang_userdata.csv', 'a+', encoding='utf-8', newline='')
writer = csv.writer(csvf)
writer.writerow(('id','昵称','学历','学校','学院','专业','经验','简介'))
# 初识URL参数
last = ****
lastid = '***************************'
def start_request(writer, last, lastid, sleep=2):
# 发送请求
    base = 'http://www.jijitang.com/profile/list?sort=recommend&last={last}&ltId={lastid}'
url = base.format(last=last, lastid=lastid)
resp = requests.get(url)
data = resp.json()
# 保存
    for users in data:
nickname = users.get('nickname')  # 昵称
        userid = users.get('_id')   # ID

try:
profile = users.get('profile')  # 简介
            role = users.get('institution').get('role')  # 学历
            institute = users.get('institution').get('institute')  # 所属学校
            dept = users.get('institution').get('dept')  # 所属学院
            experience = users.get('experience')  # 经验
            field = users.get('field')  # 专业
        except:
profile = '无'
role = '无'
institute = '无'
dept = '无'
experience = '无'
field = '无'
# 逐行写入并打印
        writer.writerow((userid, nickname, role, institute, dept, field, profile, experience))
print(userid, nickname, role, institute, dept, field, profile, experience)
save_to_mysql(userid, nickname, role, institute, dept, field, profile, experience)
#最后一个用户信息
    #用户信息的rate对应last参数
    #用户信息的_id对应lastid参数
    last_user = data[-1]
last = last_user.get('rate')
lastid = last_user.get('_id')
#降低访问速度
    time.sleep(sleep)
#根据最后一个用户的last和lastid,实现对下一批用户信息的爬取操作(递归)
    return start_request(writer, last, lastid,)
def save_to_mysql(userid, nickname, role, institute, dept, field, profile, experience):
try:
conn = pymysql.connect(host='localhost', port=3306, user='root', password='111111', db='jijitang',charset="utf8")
cursor = conn.cursor()
insert_sql = """
insert into user_data(userid,nickname, role, institute, dept, field, profile, experience)
values(%s, %s, %s, %s, %s, %s, %s, %s)
"""
cursor.execute(insert_sql, (userid, nickname, role, institute, dept, field, profile, experience))
conn.commit()
cursor.close()
conn.close()
except Exception as e:
print('wrong' + str(e))
#开始递归爬取
if __name__ == '__main__':
start_request(writer, last, lastid)

爬取结果


文章源自玩技e族-https://www.playezu.com/191577.html软件测试软件文章源自玩技e族-https://www.playezu.com/191577.html文章源自玩技e族-https://www.playezu.com/191577.html
玩技站长微信
添加好友自动发送入群邀请
weinxin
rainbow-shownow
玩技官方公众号
官方微信公众号
weinxin
PLAYEZU
 
  • 版权提示:本站仅供存储任何法律责任由作者承担▷诈骗举报◁▷新闻不符◁▷我要投稿◁
    风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系2523030730
    免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加联系方式以免受骗。
  • 原创转载:https://www.playezu.com/191577.html
    转载说明: 点我前往阅读>>>
    • 好家伙
      好家伙 9

      您好,麻烦问一下这个 python 的版本,我这边运行不起来是因为版本问题吗,提示语法错误

    匿名

    发表评论

    匿名网友
    确定