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

。
订阅者
270
文章
0
评论
测试交流1 177字数 635阅读2分7秒阅读模式

目标网站

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)

爬取结果

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

[Python 爬虫学习笔记] 爬取唧唧堂网站上的用户信息插图1
文章源自玩技e族-https://www.playezu.com/191577.html软件测试软件文章源自玩技e族-https://www.playezu.com/191577.html文章源自玩技e族-https://www.playezu.com/191577.html
 
    • 好家伙
      好家伙 9

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

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证