学习目的:

  解决AJAX请求的爬虫,网页解析库的学习,MongoDB的简单应用

正式步骤

Step1:流程分析

  1. 抓取单页内容:利用requests请求目标站点,得到单个页面的html代码,返回结果;
  2. 抓取页面详情内容:解析返回结果,得到详情页的链接,并进一步抓取详情页的信息;
  3. 下载图片并保存数据库:将图片下载到本地,把页面信息及图片url保存至MongoDB;
  4. 开启循环及多线程:对多页面内容遍历,开启多线程并提高抓取效率。

Step2:实例分析

1. 打开今日头条搜索页,搜索“中超”,查看页面的请求方法为:GET

2. 创建一个Python文件:spider_ajax.py

3.网站url信息获取

4. 打印抓取的文章超链接和抓取的html内容

# -*-  coding:utf-8 -*-
import json
from urllib.parse import urlencode
from requests.exceptions import RequestException import requests
def get_page_html(offset,keyword):
data = {
'offset':offset,
'format':'json',
'keyword':keyword,
'autoload':'true',
'count':'',
'cur_tab':1
}
# urlencode把字典对象自动转化为url参数,
# 快速导入,请选中以后,按alt+enter
url = 'https://www.toutiao.com/search_content/?' + urlencode(data)
try:
response = requests.get(url)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求索引页失败')
return None def parse_page_index(html):
#因为html打印出来是json字符串格式,json.loads作用是将已编码的 JSON 字符串解码为 Python 对象
# json.dumps作用是将 Python 对象编码成 JSON 字符串
#参考http://www.runoob.com/python/python-json.html
data = json.loads(html)
if data and 'data' in data.keys():
for item in data.get('data'):
yield item.get('article_url') def main():
html = get_page_html(0,'中超')
#打印抓取的文章详细内容的url
for url in parse_page_index(html):
print(url)
#打印获取页面内容
print(html) if __name__ == '__main__':
main()

后面的内容因为爬虫被封,很多信息获取不到,暂时不会,以后再补全这节内容

学习总结:

  想爬取商业的门户网站,感觉一脸懵逼

Python爬虫学习==>第十一章:分析Ajax请求-抓取今日头条信息的更多相关文章

  1. 爬虫(八):分析Ajax请求抓取今日头条街拍美图

    (1):分析网页 分析ajax的请求网址,和需要的参数.通过不断向下拉动滚动条,发现请求的参数中offset一直在变化,所以每次请求通过offset来控制新的ajax请求. (2)上代码 a.通过aj ...

  2. 分析ajax请求抓取今日头条关键字美图

    # 目标:抓取今日头条关键字美图 # 思路: # 一.分析目标站点 # 二.构造ajax请求,用requests请求到索引页的内容,正则+BeautifulSoup得到索引url # 三.对索引url ...

  3. python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片

    分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片.这里分析ajax请求,获取cosplay美女图片. 登陆今日头条,点击搜索,输入cosplay 下面查看浏览 ...

  4. 通过分析Ajax请求 抓取今日头条街拍图集

    代码: import os import re import json import time from hashlib import md5 from multiprocessing import ...

  5. python3爬虫-分析Ajax,抓取今日头条街拍美图

    # coding=utf-8 from urllib.parse import urlencode import requests from requests.exceptions import Re ...

  6. python爬虫---实现项目(二) 分析Ajax请求抓取数据

    这次我们来继续深入爬虫数据,有些网页通过请求的html代码不能直接拿到数据,我们所需的数据是通过ajax渲染到页面上去的,这次我们来看看如何分析ajax 我们这次所使用的网络库还是上一节的Reques ...

  7. python爬虫之分析Ajax请求抓取抓取今日头条街拍美图(七)

    python爬虫之分析Ajax请求抓取抓取今日头条街拍美图 一.分析网站 1.进入浏览器,搜索今日头条,在搜索栏搜索街拍,然后选择图集这一栏. 2.按F12打开开发者工具,刷新网页,这时网页回弹到综合 ...

  8. 分析Ajax来爬取今日头条街拍美图并保存到MongDB

    前提:.需要安装MongDB 注:因今日投票网页发生变更,如下代码不保证能正常使用 #!/usr/bin/env python #-*- coding: utf-8 -*- import json i ...

  9. 15-分析Ajax请求并抓取今日头条街拍美图

    流程框架: 抓取索引页内容:利用requests请求目标站点,得到索引网页HTML代码,返回结果. 抓取详情页内容:解析返回结果,得到详情页的链接,并进一步抓取详情页的信息. 下载图片与保存数据库:将 ...

随机推荐

  1. PHP内置常量,和可变变量,常量的定义

    关键常量 可变变量----变量名是变量的变量 常量的定义

  2. flask框架(九): 请求和响应扩展以及中间件

    一:请求响应扩展 # 每一次访问都执行 # 注意请求之前按照顺序执行 # 请求之后按照书写顺序倒序执行 # 请求之前执行 @app.before_request def process_request ...

  3. SCOI2009迷路

    当初学矩阵幂的时候弃掉了,那时候只会用矩阵优化递推,碰到这种图论的瞬间躺地. 昨天听学长的课,有一道例题,在边权为一的图上求从某点到某点的路径方案数,只要对邻接矩阵跑qpow就完事了. 于是自己画了个 ...

  4. C++中void和void*指针的含义 (指针类型的含义)

    转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻 ...

  5. 关于开发APP接口版本不兼容的问题

    关于 APP接口版本兼容的问题. iOS和android 要不断开发新版本,很多服务端开发都是在以前接口的逻辑上进行修改. 新的APP和接口开发后,接口如何兼容老的APP? 有的公司 每次发布完APP ...

  6. Requests 代理池

    Requests 本身不提供代理池,然而爬数据又要用,所以只能自己搞.其实还挺简单的.我也不知道为什么这么有用的 feature 一直没有被加入. import requests class Clie ...

  7. JS基础_对象操作

    1.in 运算符 通过该运算符可以检查一个对象中是否含有指定的属性,如果有,返回true 语法: “属性名” in 对象 var obj = { name:"hello" } co ...

  8. SRGAN 学习心得

    一.理论 关于SRGAN的的论文中文翻译网上一大堆,可以直接读网络模型(大概了解),关于loss的理解,然后就能跑代码 loss  = mse + 对抗损失 + 感知损失   : https://bl ...

  9. golang mysql 如何设置最大连接数和最大空闲连接数

    本文介绍golang 中连接MySQL时,如何设置最大连接数和最大空闲连接数. 关于最大连接数和最大空闲连接数,是定义在golang标准库中database/sql的. 文中例子连接MySQL用的SQ ...

  10. jsp页面中使用javabean

    <%@ page language="java" import="java.util.*,com.loaderman.demo.b_cases.*" pa ...