Python 爬虫 ajax爬取马云爸爸微博内容

栏目: jQuery · 发布时间: 6年前

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

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()

项目运行情况

Python 爬虫 ajax爬取马云爸爸微博内容

Python 爬虫 ajax爬取马云爸爸微博内容


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据库系统概念

数据库系统概念

Abraham Silberschatz、Henry F. Korth、S. Sudarshan / 杨冬青、马秀莉、唐世渭 / 机械工业 / 2006-10-01 / 69.50元

本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书以前版本的中文版作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。 本书调整和新增内容:调整了第4版的讲授顺序。首先介绍SQL及其高级特性,使学生容易接受数据库设计的概念。新增数据库设计的专......一起来看看 《数据库系统概念》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具