ajax爬取情况

有时候我们在用 Requests 抓取页面的时候,得到的结果可能和在浏览器中看到的是不一样的,在浏览器中可以看到正常显示的页面数据,但是使用 Requests 得到的结果并没有,这其中的原因是 Requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是页面又经过 JavaScript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在了 HTML 文档中的,也可能是经过 JavaScript 经过特定算法计算后生成的

项目代码如下

 1 import requests
 2 from fake_useragent import UserAgent
 3 from pyquery import PyQuery
 4 from urllib.parse import urlencode
 5 from requests.packages import urllib3
 6 from pymongo import MongoClient
 7
 8 # 关闭警告
 9 urllib3.disable_warnings()
10
11 base_url = 'https://m.weibo.cn/api/container/getIndex?'
12
13 # 激活本地MongoDB客户端
14 client = MongoClient('localhost',27001)
15 # 创建数据库
16 pages = client['pages']
17 # 创建集合
18 ma_yun = pages['ma_yun']
19
20 # 保存到mongoDB中
21 def save_to_mongo(result):
22     if ma_yun.insert_one(result):
23         print('saved to Mongo','已获取{number}条数据'.format(number=ma_yun.count()))
24
25 # 生成UA
26 def create_user_agent():
27     ua = UserAgent(use_cache_server=False)
28     # print(ua.chrome)
29     return ua.chrome
30
31 # 生成headers
32 def create_headers():
33     headers = {
34         'User-Agent': create_user_agent()
35     }
36     return headers
37
38 # 获取页面
39 def get_page(page):
40     # 设置参数
41     params = {
42         'sudaref':'germey.gitbooks.io',
43         'display':'0',
44         'retcode':'6102',
45         'type':'uid',
46         'value':'2145291155',
47         'containerid':'1076032145291155',
48         'page':page
49     }
50     url = base_url + urlencode(params)
51     try:
52         response = requests.get(url,create_headers(),verify=False)
53         if response.status_code == 200:
54             return response.json()
55     except requests.ConnectionError as e:
56         print('Error',e.args)
57
58 # 解析页面
59 def parse_page(json):
60     if json:
61         items = json.get('data').get('cards')
62         if items != None:
63             for item in items:
64                 item = item.get('mblog')
65                 weibo = {}
66                 weibo['id'] = item.get('id')
67                 # 将正文中的 HTML 标签去除掉
68                 weibo['text'] = PyQuery(item.get('text')).text()
69                 # 点赞数
70                 weibo['attitudes_count'] = item.get('attitudes_count')
71                 # 评论数
72                 weibo['comments_count'] = item.get('comments_count')
73                 # 发布时间
74                 weibo['datetime'] = item.get('created_at')
75                 # 转发数
76                 weibo['reposts_count'] = item.get('reposts_count')
77
78                 yield weibo
79
80 # 设置主方法进行调用其他方法
81 def main():
82     for page in range(1,30):
83         json = get_page(page)
84         results = parse_page(json)
85         for result in results:
86             save_to_mongo(result)
87
88 if __name__ == '__main__':
89     main()

项目运行情况

转载于:https://www.cnblogs.com/littlebob/p/9296894.html

Python 爬虫 ajax爬取马云爸爸微博内容相关推荐

  1. AJAX教程美食滤镜,Python爬虫实例——爬取美团美食数据

    1.分析美团美食网页的url参数构成 1)搜索要点 美团美食,地址:北京,搜索关键词:火锅 2)爬取的url https://bj.meituan.com/s/%E7%81%AB%E9%94%85/ ...

  2. python爬取ajax动态内容肯德基门店,Python爬虫如何爬取KFC地址

    随着人们生活水平的提高,肯德基这类的快餐消费的十分火爆,成为小朋友和年轻人的最爱,我们到一个地方想要找到肯德基店面,会根据导航获取肯德基地址,那你知道我们也可以使用python爬虫获取KFC地址吗?我 ...

  3. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

  4. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

  5. python爬取网页表格数据匹配,python爬虫——数据爬取和具体解析

    标签:pattern   div   mat   txt   保存   关于   json   result   with open 关于正则表达式的更多用法,可参考链接:https://blog.c ...

  6. python爬取豆瓣电影top250_用Python爬虫实现爬取豆瓣电影Top250

    用Python爬虫实现爬取豆瓣电影Top250 #爬取 豆瓣电影Top250 #250个电影 ,分为10个页显示,1页有25个电影 import urllib.request from bs4 imp ...

  7. python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...

    学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面 import os import requests import re import json from bs4 import B ...

  8. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  9. Python爬虫 - scrapy - 爬取妹子图 Lv1

    0. 前言 这是一个利用python scrapy框架爬取网站图片的实例,本人也是在学习当中,在这做个记录,也希望能帮到需要的人.爬取妹子图的实例打算分成三部分来写,尝试完善实用性. 系统环境 Sys ...

最新文章

  1. 利用:header匹配所有标题做目录
  2. 操作多个表_6_生成笛卡尔积
  3. 周末狂欢赛2(冒泡排序,概率充电器,不勤劳的图书管理员)
  4. python操作界面_Python使用PyQt5的Designer工具创建UI界面
  5. Mybatis源码分析第一天------Mybatis实用篇
  6. Android项目实战(八):列表右侧边栏拼音展示效果
  7. 状语从句不是简单句_简单句、并列句、复合句
  8. ctf.show misc入门 21~40
  9. 硬件设计-DIY功放
  10. Linux 开启443端口
  11. 加密机是如何工作的_什么是加密,它如何工作?
  12. Windows 10(Office 2019)下安装mathtype 6.9/7.4以及相关冲突问题解决
  13. python在新的图片窗口显示图片(图像)
  14. 现有关系数据库如下: 学生(学号,姓名,性别,专业) 课程(课程号,课程名,学分) 学习(学号,课程号,分数) 分别用关系代数表达式和 SQL 语句实现下列 1—5 小题(注意:每小题都要分别 写出关
  15. c语言扩散,可扩散列--可扩散列头文件C语言
  16. 冯·诺依曼结构计算机的存储器和数据
  17. 【杂谈】一种C#防作弊检测手段
  18. ZYNQ | 开发板推荐
  19. 如何制作自己的机器人
  20. 人社部发布13个新职业,人工智能排第一

热门文章

  1. VC++6.0上实现PC机与单片机串口通信的PC端上位机软件
  2. InDesign 教程如何自定义工作区?
  3. 2020人脸识别最新进展综述,参考文献近400篇 | 附下载
  4. 象数疗法对胃肠疾病的治疗
  5. 2019-2020-1 20175227张雪莹《信息安全系统设计基础》 实验五 《通讯协议设计》
  6. 计算机主板的英文,主板英语怎么说,主板翻译成英文?
  7. 用集群脚本功能安装大象医生优化你的大数据作业
  8. 大象医生.Net业务架构-将来
  9. 乔布斯的3个工作技巧:教你如何得到自己想要的
  10. navicat永久使用权