Python爬虫__微博某个话题的内容数据
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爬虫__微博某个话题的内容数据的更多相关文章
- python爬虫Scrapy(一)-我爬了boss数据
一.概述 学习python有一段时间了,最近了解了下Python的入门爬虫框架Scrapy,参考了文章Python爬虫框架Scrapy入门.本篇文章属于初学经验记录,比较简单,适合刚学习爬虫的小伙伴. ...
- Python爬虫框架Scrapy实例(三)数据存储到MongoDB
Python爬虫框架Scrapy实例(三)数据存储到MongoDB任务目标:爬取豆瓣电影top250,将数据存储到MongoDB中. items.py文件复制代码# -*- coding: utf-8 ...
- Python爬虫入门教程 30-100 高考派大学数据抓取 scrapy
1. 高考派大学数据----写在前面 终于写到了scrapy爬虫框架了,这个框架可以说是python爬虫框架里面出镜率最高的一个了,我们接下来重点研究一下它的使用规则. 安装过程自己百度一下,就能找到 ...
- 【转】Python爬虫:抓取新浪新闻数据
案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSou ...
- Python爬虫:抓取新浪新闻数据
案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSou ...
- Python "爬虫"出发前的装备之二数据先行( Requests 模块)
1. 概念 爬虫不是动物,而是一种计算机程序. 这种程序有自己特定的功能,能按照使用者给定的一系列规则自行浏览万维网并获取需要的信息.此类程序被称为 网络爬虫(web crawler) 或 网络蜘蛛( ...
- python爬虫__第一个爬虫程序
前言 机缘巧合,最近在学习机器学习实战, 本来要用python来做实验和开发环境 得到一个需求,要爬取大众点评中的一些商户信息, 于是开启了我的第一个爬虫的编写,里面有好多心酸,主要是第一次. 我的文 ...
- python爬虫-模拟微博登录
微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...
- Python爬虫:微博粉丝列表
前言 本来打算做一个关于微博粉丝列表的爬虫,可以统计一下某个微博账号的粉丝里面,僵尸粉(水军)的数量,大V数量. 结果写完爬虫才发现,现在微博只给人看粉丝列表的前5页.......哈哈,好吧.挺无奈的 ...
随机推荐
- Windows&Linux文件传输方式总结
在渗透过程中,通常会需要向目标主机传送一些文件,来达到权限提升.权限维持等目的,本篇文章主要介绍一些windows和Linux下常用的文件传输方式. Windows 利用FTP协议上传 在本地或者VP ...
- 半吊子菜鸟学Web开发 -- PHP学习 4 --异常
PHP异常处理 1 抛出一个异常 与Python的try except类似,PHP用try catch来捕获异常 基本语法 try{ //可能出现错误或异常的代码 //catch表示捕获,Except ...
- 从查询重写角度理解elasticsearch的高亮原理
一.高亮的一些问题 elasticsearch提供了三种高亮方式,前面我们已经简单的了解了elasticsearch的高亮原理; 高亮处理跟实际使用查询类型有十分紧密的关系,其中主要的一点就是muti ...
- java面试--360
1题执行以下程序后的输出结果是()public class Test {public static void main(String[] args) {StringBuffer a = new Str ...
- 序列化接口的id有什么用?
反序列化Java对象时必须提供该对象的class文件,现在的问题是随着项目的升级,系统的class文件也会升级,Java如何保证两个class文件的兼容性? Java序列化机制允许为序列化类提供一个p ...
- SpringBoot的 Actuator 是做什么的?
本质上,Actuator 通过启用 production-ready 功能使得 SpringBoot 应用程序变得更有生命力.这些功能允许我们对生产环境中的应用程序进行监视和管理. 集成 Spring ...
- 转载:TCP协议如何保证可靠传输
转载至:https://www.cnblogs.com/xiaokang01/p/10033267.html TCP协议如何保证可靠传输 概述: TCP协议保证数据传输可靠性的方式主要有: (校 序 ...
- SpirngMVC源码分析
分析过程 通过 前端控制器源码 分析 SpringMVC 的执行过程 前端控制器在 web.xml 文件中的配置 <!-- springmvc 前端控制器 --> <servlet& ...
- 学习MFS(五)
########################################################## mfs master 安装 建议 cp eth0 eth0:0 ifup eth ...
- js身份证精确认证
function checkIdCard(idcard) { // 1 "验证通过!", 0 //身份证号码校验错误 var Errors = new Array( "1 ...