python爬虫练习,爬取CSDN论坛帖子-程序员宅基地

技术标签: 爬虫  python  pycharm  

爬取内容主要是csdn论坛帖子,帖子详情(评论回复),用户信息

 

1、生成3张数据库表:

from peewee import *

db = MySQLDatabase("spider", host="127.0.0.1", port=3306, user="root", password="123456")


class BaseModel(Model):
    class Meta:
        database = db


class Topic(BaseModel):
    title = CharField() #标题
    content = TextField(default="") #内容
    id = BigIntegerField(primary_key=True) #帖子id
    author = CharField() #帖子作者
    create_time = DateTimeField() #帖子创建时间
    answer_nums = IntegerField(default=0) # 帖子回复数量
    click_nums = IntegerField(default=0) # 帖子查看数量
    like_nums = IntegerField(default=0) #点赞数
    score = IntegerField(default=0) # 赏分
    status = CharField() #状态
    last_answer_time = DateTimeField()


class Answer(BaseModel):
    topic_id = BigIntegerField()
    author = CharField()
    content = TextField(default="")
    create_time = DateTimeField()
    like_nums = IntegerField(default=0)


class Author(BaseModel):
    id = CharField(primary_key=True)
    blog_nums = IntegerField(default=0) #博客数
    resources_nums = IntegerField(default=0) #资源数
    forum_nums = IntegerField(default=0) #论坛数
    blink_nums = IntegerField(default=0) #Blink数
    ask_nums = IntegerField(default=0) #问答数
    collection_nums = IntegerField(default=0) #收藏数
    special_column_nums = IntegerField(default=0) #专栏数
    desc = TextField(null=True) #用户描述
    following_nums = IntegerField(default=0) #关注数


if __name__ == "__main__":
    db.create_tables([Topic,Answer,Author])

 

2、数据爬取

import re

import requests

from model import *
from urllib import parse
from scrapy import Selector
from datetime import datetime

domain = "https://bbs.csdn.net"


# 获取左边菜单js
def get_nodes_json():
    left_menu_text = requests.get("https://bbs.csdn.net/dynamic_js/left_menu.js?csdn").text
    nodes_str_match = re.search("forumNodes:(.*])", left_menu_text)
    if nodes_str_match:
        nodes_str = nodes_str_match.group(1).replace("null", "None")
        # nodes_list = ast.literal_eval(node
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_38071193/article/details/106625834

智能推荐

【luogu3379】【LCA】最近公共祖先(LCA)_`一∫0!、。p ∴?`::ⅹγ8:丿。!::!丫丨。 卜q|ilin川1∵‘011:,|、:了}`-程序员宅基地

传送门题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数N,M,SN,M,SN,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。接下来N−1N-1N−1行每行包含两个正整数x,yx, yx,y,表示xxx 结点和yyy 结点之间有一条直接连接的边(数据保证可以构成树)。接下来MMM行每行包含两个正整数a,ba,ba,b,表示询问aaa 结点和bbb 结点的最近公共祖先。输出格式输出包含MMM行,每行包含一个正整数,依次为每一个询问的结_`一∫0!、。p ∴?`::ⅹγ8:丿。!::!丫丨。 卜q|ilin川1∵‘011:,|、:了}`γ∵

oracle表分区增加分区-程序员宅基地

昨天发现车辆轨迹库的表分区用完了,连夜加了分区,我们存轨迹的这张表建分区的时候按日期建只到2012-10-15,分区名从TAB_GPSBUSHIS_P1....TAB_GPSBUSHIS_P999,从2012-10-15开始的数据就默认都存在了TAB_GPSBUSHIS_P1000,所以现在的任务就是从2012-10-16开始继续建分区。为了分区的序号连续性,我先将maxvalue对..._oracle增加表分区 pmax

saveAsTextFile错误--java.io.IOException: (null) entry in command string: null chmod 0644_23/08/22 16:53:22 error sparkhadoopwriter: abortin-程序员宅基地

读取本地的文件,计算完之后保存到本地,出现以下错误:ERROR Executor:91 - Exception in task 0.0 in stage 3.0 (TID 2)java.io.IOException: (null) entry in command string: null chmod 0644 C:\Users\HP\Desktop\2\6.txt\_temporary\0..._23/08/22 16:53:22 error sparkhadoopwriter: aborting job job_2023082216531881

解决sql 2008 事务日志收缩与截断无法减小日志物理文件的方法_收缩日志 很慢-程序员宅基地

解决sql 2008 事务日志收缩与截断无法减小日志物理文件的方法_收缩日志 很慢

Intellij IDEA 封装Jar包(提示错误: 找不到或无法加载主类)_removing {logging-channel-adapter:_org.springframe-程序员宅基地

转载自:https://www.cnblogs.com/Bruce_H21/p/9909198.html Neo的技术点滴的博客本来打包是个简单的事情,但是当我用Maven的插件打包springboot的项目后,虽然能启动,但是当用到Class<?> temp=Class.foName(className);时就卡在这一行了,报错Removing {logging-channel-adapter:_org.springframework.integration.errorLogg.._removing {logging-channel-adapter:_org.springframework.integration.errorlogg

数组的定义与使用-程序员宅基地

数组的定义数组类型 数组名称[] = new 数组类型[长度];数组的初始化静态初始化:初始化时由程序员显示指定每个数组元素的初始值,有系统决定数组长度 动态初始化:初始化时程序员只指定数组长度,有系统为数组元素分配初始值。 //静态初始化 int[] intArr1 = new int[]{1,2,3,4,5}; //动态初始化 ...

随便推点

python3:数字/字符串之间的转换_python 字符串转数字-程序员宅基地

目录前言进制之间的转换字符串和数字之间的转换单个字符和对应ascii转换前言 项目中用到了pyDES模块和hashlib模块,计算出来的结果和预期的总是不一致,后来不断的实验发现是传入数据类型不一致导致的,传入hex类型和bytes类型计算出来的完全不一致。以此做个总结顺便复习以下数字和字符串之间的转换。进制之间的转换bin( number ):接收的是数字..._python 字符串转数字

VTK面绘制实例_vtkvolume16reader-程序员宅基地

例子通过vtkVolume16Reader读取人头一系列的二维切片,采用vtkContourFilter滤波器抽取等值面为500的皮肤,在等值面上利用vtkPolyDataNormals产生一系列的法线,用vtkOutlineFilter滤波器在图像外面产生个外围的边框。在console下的代码如下://Surface rendering#include#include#includ_vtkvolume16reader

c# 通用的工具类(CommonLibrary)_c# commonlibrary-程序员宅基地

CommonLibrary工具,下载地址:https://commonlibrarynet.codeplex.com/ ,预览如下:_c# commonlibrary

Mac版本EXCEL导入数据 (Excel真香)-程序员宅基地

跟爬虫相爱相杀了那么久,突然发现Excel居然还有直接导入网站数据的功能,针对一些小的网页爬取请求,Excel的输出格式简明,方法简单,是真的香啊!!但是mac版本中有些Excel的功能并不完全,或者在其他地方很难找的,所以特此写了这篇博客来与mac用户分享一下这个发现我们以12306网站的数据为例:首先复制网址:http://www.12306.cn/mormhweb/tlkytst/...

《STL源码剖析》---stl_slist.h阅读笔记-程序员宅基地

slist是单向链表,不是STL标准,且功能不如list,但是slist占用空间小,某些操作代价更小。