【爬虫】用Requests+正则+BeautifulSoup获取今日头条图集【附完整代码】

文章目录项目预览1. 库的引入2. 爬取索引页面2.1 页面分析2.2爬取索引界面的代码3. 爬取详情界面3.1详情界面分析3.2爬取详情界面代码4. 保存到MongoDB中5. 下载图片5. main函数及循环访问6. 完整代码====================================================================本文介绍的是使用request...
摘要由CSDN通过智能技术生成

====================================================================

本文介绍的是使用requests库+正则+Beautiful爬取今日头条图集,下载图片并将相关数据保存到mongoDB中。博主在学习崔庆才的爬虫教学视频,学到15课时时,由于头条进行了更新,部分代码已经失效了,自己捣鼓了大半天,终于成功爬取了。在学习时,发现有很多新手对代码不是很理解,所以打算把这部分内容写出来,加上详细的注释,分享给大家。

项目预览

思路:

  1. 我们先爬取索引界面,获得进入详情页面的url
  2. 依次访问详情页面,并解析页面内容
  3. 保存信息和下载图片
  4. 当索引页面的所有图集都爬完了,我们要想着翻页,继续爬取

项目目录(爬取后)
在这里插入图片描述
MongoDB
在这里插入图片描述
控制栏
输出None表示该文章类型不是我们要获取的
在这里插入图片描述

1. 库的引入

在爬取今日头条时,所需要的全部库,请确保所有库都成功安装
首先打开编辑器,创建一个spider_toutiao.py文件,将下列引用写入到文件中

import requests
from urllib.parse import urlencode  
from requests import RequestException
import json
from bs4 import BeautifulSoup
import re
import pymongo
from config import * # 这个自己定义的一个配置文件,下面会讲
from hashlib import md5
from multiprocessing import Pool
2. 爬取索引页面
2.1 页面分析

打开进入头条,在搜索栏输入街拍,显示如下,我们这里要爬取图片类型的文章,该类型文章具体特征已用红圈标出来了。在这一步,我们暂时不对文章类型做判断。
在这里插入图片描述
下面按F12,点击netword,经过搜索我们发现,本界面的数据是通过ajax来获取的,返回数据类型是json格式,所以我们要通过requests抓取返回的json格式数据。下图中横线画出来的是ajax访问的url,红圈标出的data就是我们要获取的数据,点开后里面有我们要获取的url
在这里插入图片描述
接下来点击headrs,很闲画出的部分就是我们要访问的url。然后往下翻,找到请求参数,这写参数是我们后面要传入到url中的

在这里插入图片描述
在这里插入图片描述
注意这cookie和浏览器信息,下面代码中要用到
在这里插入图片描述

2.2爬取索引界面的代码
#该函数用来分析索引解码,获取进入详情页的url。
#我们要传入一个offset(页数)和keyword(搜索的关键字)
def get_page_index(offset, keyword):

	#data中的内容就是我们上图中访问参数,可以直接复制下来,把最后的timestamp参数删掉
    data = {
        'aid': '24',
        'app_name': 'web_search',
        'offset': offset, #注意这要换成我们传入的参数
        'format': 'json',
        'keyword': keyword, #注意这要换成我们传入的参数
        'autoload': 'true',
        'count': '20',
        'en_qc': '1',
        'cur_tab': '1',
        'from': 'search_tab',
        'pd': 'synthesis'
    }
    
    #构造访问的url
    url = 'https://
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值