1 # -*- coding: utf-8 -*-
2 # @Time : 2020/8/18 15:39
3 # @Author : Chunfang
4 # @Email : 3470959534@qq.com
5 # @File : Weibo_content.py
6 # @Software: PyCharm
7
8 from urllib.parse import urlencode
9 import requests
10 from pyquery import PyQuery as pq
11 import time
12 import os
13 import csv
14 import json
15
16 base_url = 'https://m.weibo.cn/api/container/getIndex?'
17
18 headers = {
19 'Host': 'm.weibo.cn',
20 'Referer': 'https://m.weibo.cn/u/2830678474',
21 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
22 'X-Requested-With': 'XMLHttpRequest',
23 }
24 class SaveCSV(object):
25
26 def save(self, keyword_list,path, item):
27 """
28 保存csv方法
29 :param keyword_list: 保存文件的字段或者说是表头
30 :param path: 保存文件路径和名字
31 :param item: 要保存的字典对象
32 :return:
33 """
34 try:
35 # 第一次打开文件时,第一行写入表头
36 if not os.path.exists(path):
37 with open(path, "w", newline='', encoding='utf-8-sig') as csvfile: # newline='' 去除空白行
38 writer = csv.DictWriter(csvfile, fieldnames=keyword_list) # 写字典的方法
39 writer.writeheader() # 写表头的方法
40
41 # 接下来追加写入内容
42 with open(path, "a", newline='', encoding='utf-8-sig') as csvfile: # newline='' 一定要写,否则写入数据有空白行
43 writer = csv.DictWriter(csvfile, fieldnames=keyword_list)
44 writer.writerow(item) # 按行写入数据
45 print("^_^ write success")
46
47 except Exception as e:
48 print("write error==>", e)
49 # 记录错误数据
50 with open("error.txt", "w") as f:
51 f.write(json.dumps(item) + ",\n")
52 pass
53
54 def get_page(page,title): #得到页面的请求,params是我们要根据网页填的,就是下图中的Query String里的参数
55 params = {
56 'containerid': '100103type=1&q='+title,
57 'page': page,#page是就是当前处于第几页,是我们要实现翻页必须修改的内容。
58 'type':'all',
59 'queryVal':title,
60 'featurecode':'20000320',
61 'luicode':'10000011',
62 'lfid':'106003type=1',
63 'title':title
64 }
65 url = base_url + urlencode(params)
66 print(url)
67 try:
68 response = requests.get(url, headers=headers)
69 if response.status_code == 200:
70 print(page)
71 return response.json()
72 except requests.ConnectionError as e:
73 print('Error', e.args)
74
75 # 解析接口返回的json字符串
76 def parse_page(json , label):
77 res = []
78 if json:
79 items = json.get('data').get('cards')
80 for i in items:
81 if i == None:
82 continue
83 item = i.get('mblog')
84 if item == None:
85 continue
86 weibo = {}
87 weibo['id'] = item.get('id')
88 weibo['label'] = label
89 weibo['text'] = pq(item.get('text')).text().replace(" ", "").replace("\n" , "")
90 res.append(weibo)
91 return res
92
93 if __name__ == '__main__':
94
95 title = input("请输入搜索关键词:")
96 path = "article.csv"
97 item_list = ['id','text', 'label']
98 s = SaveCSV()
99 for page in range(10,20):#循环页面
100 try:
101 time.sleep(1) #设置睡眠时间,防止被封号
102 json = get_page(page , title )
103 results = parse_page(json , title)
104 if requests == None:
105 continue
106 for result in results:
107 if result == None:
108 continue
109 print(result)
110 s.save(item_list, path , result)
111 except TypeError:
112 print("完成")
113 continue

Python爬虫__微博某个话题的内容数据的更多相关文章

  1. python爬虫Scrapy(一)-我爬了boss数据

    一.概述 学习python有一段时间了,最近了解了下Python的入门爬虫框架Scrapy,参考了文章Python爬虫框架Scrapy入门.本篇文章属于初学经验记录,比较简单,适合刚学习爬虫的小伙伴. ...

  2. Python爬虫框架Scrapy实例(三)数据存储到MongoDB

    Python爬虫框架Scrapy实例(三)数据存储到MongoDB任务目标:爬取豆瓣电影top250,将数据存储到MongoDB中. items.py文件复制代码# -*- coding: utf-8 ...

  3. Python爬虫入门教程 30-100 高考派大学数据抓取 scrapy

    1. 高考派大学数据----写在前面 终于写到了scrapy爬虫框架了,这个框架可以说是python爬虫框架里面出镜率最高的一个了,我们接下来重点研究一下它的使用规则. 安装过程自己百度一下,就能找到 ...

  4. 【转】Python爬虫:抓取新浪新闻数据

    案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSou ...

  5. Python爬虫:抓取新浪新闻数据

    案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSou ...

  6. Python "爬虫"出发前的装备之二数据先行( Requests 模块)

    1. 概念 爬虫不是动物,而是一种计算机程序. 这种程序有自己特定的功能,能按照使用者给定的一系列规则自行浏览万维网并获取需要的信息.此类程序被称为 网络爬虫(web crawler) 或 网络蜘蛛( ...

  7. python爬虫__第一个爬虫程序

    前言 机缘巧合,最近在学习机器学习实战, 本来要用python来做实验和开发环境 得到一个需求,要爬取大众点评中的一些商户信息, 于是开启了我的第一个爬虫的编写,里面有好多心酸,主要是第一次. 我的文 ...

  8. python爬虫-模拟微博登录

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  9. Python爬虫:微博粉丝列表

    前言 本来打算做一个关于微博粉丝列表的爬虫,可以统计一下某个微博账号的粉丝里面,僵尸粉(水军)的数量,大V数量. 结果写完爬虫才发现,现在微博只给人看粉丝列表的前5页.......哈哈,好吧.挺无奈的 ...

随机推荐

  1. 【ASP.NET Core】MVC模型绑定——实现同一个API方法兼容JSON和Form-data输入

    在上一篇文章中,老周给大伙伴们大致说了下 MVC 下的模型绑定,今天咱们进行一下细化,先聊聊模型绑定中涉及到的一些组件对象. ------------------------------------- ...

  2. 教你识别一些sequence的相关问题

    摘要:通过一些自定义的视图或者查询语句,批量识别集群的sequence相关问题 本文分享自华为云社区<GaussDB(DWS)运维 -- sequence常见运维操作>,作者: 譡里个檔. ...

  3. Mac 常用

    Mac下如何复制文件路径 / 文件夹路径 Rudon滨海渔村 2020-08-06 20:35:33 587 收藏分类专栏: Mac OS X 命令行 文章标签: Mac Finder版权步骤在Fin ...

  4. TCP和UDP协议?

    TCP(Transmission Control Protocol:传输控制协议:面向连接,可靠传输 UDP(User Datagram Protocol):用户数据报协议:面向无连接,不可靠传输

  5. 什么是 JavaConfig?

    Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法.因此它有助于避免使用 XML 配置.使用 JavaConfig 的优点在 ...

  6. 学习ELK日志平台(三)

    ELK(elasticsearch.logstash.kibana) Elastic Stack是原ELK Stack在5.0版本加入Beats套件后的新称呼 解决痛点: 开发人员不能登录线上serv ...

  7. ROS机器人操作系统相关书籍、资料和学习路径

    作者:Top Liu链接:https://zhuanlan.zhihu.com/p/30391098来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文是易科机器人实验 ...

  8. pandas数据读取

    02. Pandas读取数据 本代码演示: pandas读取纯文本文件 读取csv文件 读取txt文件 pandas读取xlsx格式excel文件 pandas读取mysql数据表 1.读取纯文本文件 ...

  9. 每天坚持一个CSS——社会人

    每天一个CSS-社会人 实现效果 想法 之前看到一篇博客,使用python绘制出了小猪佩奇,所以自己想试一试,采用纯html + CSS绘制出低配版的小猪佩奇. 实现思路 使用上一篇,圆与边框实现.最 ...

  10. HTML5 Canvas绘制效率如何?

    js运行效率在提升 编程语言的效率是前提,js自然比不上native的C语言效率,所以Canvas效率无疑比不上原生的2D图形绘制,但是js效率的提升是有目共睹的,以js与as为例,基本操作(运算操作 ...