Python 爬虫 ajax爬取马云爸爸微博内容
ajax爬取情况
有时候我们在用 Requests 抓取页面的时候,得到的结果可能和在浏览器中看到的是不一样的,在浏览器中可以看到正常显示的页面数据,但是使用 Requests 得到的结果并没有,这其中的原因是 Requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是页面又经过 JavaScript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在了 HTML 文档中的,也可能是经过 JavaScript 经过特定算法计算后生成的
项目代码如下
import requests
from fake_useragent import UserAgent
from pyquery import PyQuery
from urllib.parse import urlencode
from requests.packages import urllib3
from pymongo import MongoClient # 关闭警告
urllib3.disable_warnings() base_url = 'https://m.weibo.cn/api/container/getIndex?' # 激活本地MongoDB客户端
client = MongoClient('localhost',27001)
# 创建数据库
pages = client['pages']
# 创建集合
ma_yun = pages['ma_yun'] # 保存到mongoDB中
def save_to_mongo(result):
if ma_yun.insert_one(result):
print('saved to Mongo','已获取{number}条数据'.format(number=ma_yun.count())) # 生成UA
def create_user_agent():
ua = UserAgent(use_cache_server=False)
# print(ua.chrome)
return ua.chrome # 生成headers
def create_headers():
headers = {
'User-Agent': create_user_agent()
}
return headers # 获取页面
def get_page(page):
# 设置参数
params = {
'sudaref':'germey.gitbooks.io',
'display':'',
'retcode':'',
'type':'uid',
'value':'',
'containerid':'',
'page':page
}
url = base_url + urlencode(params)
try:
response = requests.get(url,create_headers(),verify=False)
if response.status_code == 200:
return response.json()
except requests.ConnectionError as e:
print('Error',e.args) # 解析页面
def parse_page(json):
if json:
items = json.get('data').get('cards')
if items != None:
for item in items:
item = item.get('mblog')
weibo = {}
weibo['id'] = item.get('id')
# 将正文中的 HTML 标签去除掉
weibo['text'] = PyQuery(item.get('text')).text()
# 点赞数
weibo['attitudes_count'] = item.get('attitudes_count')
# 评论数
weibo['comments_count'] = item.get('comments_count')
# 发布时间
weibo['datetime'] = item.get('created_at')
# 转发数
weibo['reposts_count'] = item.get('reposts_count') yield weibo # 设置主方法进行调用其他方法
def main():
for page in range(1,30):
json = get_page(page)
results = parse_page(json)
for result in results:
save_to_mongo(result) if __name__ == '__main__':
main()
项目运行情况


Python 爬虫 ajax爬取马云爸爸微博内容的更多相关文章
- python爬虫:爬取读者某一期内容
学会了怎么使用os模块 #!/usr/bin/python# -*- encoding:utf-8 -*- import requestsimport osfrom bs4 import Beauti ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
- Python爬虫之爬取慕课网课程评分
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...
- from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)
使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...
- Python爬虫之爬取站内所有图片
title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...
- python爬虫实战---爬取大众点评评论
python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...
- Python爬虫之爬取淘女郎照片示例详解
这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...
- python 爬虫之爬取大街网(思路)
由于需要,本人需要对大街网招聘信息进行分析,故写了个爬虫进行爬取.这里我将记录一下,本人爬取大街网的思路. 附:爬取得数据仅供自己分析所用,并未用作其它用途. 附:本篇适合有一定 爬虫基础 crawl ...
- python爬虫项目-爬取雪球网金融数据(关注、持续更新)
(一)python金融数据爬虫项目 爬取目标:雪球网(起始url:https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_ ...
随机推荐
- Array对象的判定
/* 关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法 */ //方法一:利用instanceof来判 ...
- JavaScript设计模式-21.命令模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Linux 命令学习之cd
功能说明: cd 命令是 linux 最基本的命令语句,其他的命令都会依赖与 cd 命令.因此学好 cd 命令是必须的. 语 法:cd [目的目录] 补充说明:cd指令可让用户在不同的目录间切换,需要 ...
- 低版本的linux系统装samba服务器
这里所用系统fedora14,安装samba服务器.我是壮壮熊. 由于工作原因,需要在feaord14上装samba服务器. 问题描述:用yum -y install samba安装samba后,需要 ...
- 转载:BIO | NIO | AIO
http://my.oschina.net/bluesky0leon/blog/132361 也谈BIO | NIO | AIO (Java版) 转载自:zheng-lee博客 发布时间: 201 ...
- 我的“MIT Challenge”
前言 在学习之余看到了一个有趣的挑战,名叫"MIT Challenge",这个挑战的目标是在一年365天之内学习 MIT 计算机系本科本科学生四年的课程.自己大二学习算法时也曾学习 ...
- VSCode基本配置
功能:保存时自动按ESLint规范格式化代码 + stylus配置(需安装Manta's Stylus Supremacy插件) { "editor.fontSize": 18, ...
- Connection to https://dl-ssl.google.com refused的解决办法
使用SDK Manager.exe安装Android开发环境的时候会遇到: Fetching https://dl-ssl.google.com/android/repository/addons_l ...
- IIS 站点 共享目录
1.先建立站点,再设置文件夹为共享,Everyone 2.Mac电脑 Everyone不能访问,必须建立用户
- <深入理解JavaScript>学习笔记(1)_编写高质量JavaScript代码的基本要点
注:本文是拜读了 深入理解JavaScript 之后深有感悟,故做次笔记方便之后查看. JQuery是一个很强大的JavaScript 类库,在我刚刚接触JavaScript的就开始用了. JQuer ...