今日头条街拍图片爬取

import re
import requests
import os
from urllib import request
import json
from mysql_tu import mysql_conn

headers = {
    ‘user-agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36‘
}
for v in range(0,60,20):
    url = ‘https://www.toutiao.com/search_content/?offset={}&format=json&keyword=%E8%A1%97%E6%8B%8D&autoload=true&count=20&cur_tab=1&from=search_tab‘.format(v)

    response = requests.get(url,headers=headers)
    html_json_dict = response.json()

    # 创建文件
    if not os.path.exists(‘cccc‘):
        os.mkdir(‘cccc‘)

    data_list = html_json_dict[‘data‘]
    # print(data_list)
    for data_item in data_list:
        if ‘article_url‘ in data_item:
            article_url = data_item[‘article_url‘]
            # print(article_url)
    #
            response = requests.get(article_url,headers=headers)
            html_ee = response.text
            # print(html_ee)
            # html_ee = json.loads(html_str)

            # print(type(html_str))
            pp = r‘gallery: JSON\.parse\((.*)\),‘
            match_res = re.search(pp, html_ee)
            # print(match_res.group(1))
            if match_res:
                match_str = match_res.group(1)
                match_dict = json.loads(match_str)
                # print(match_dict)
                # print(type(match_dict))
                match_dict = json.loads(match_dict)
                # print(match_dict)
                # print(type(match_dict))
                image_dict = match_dict[‘sub_images‘]
                # print(image_dict)
                for v in image_dict:
                    image_aa = v[‘url‘]
                    print(image_aa)
                    try:
                        # filename = ‘cccc/‘ + image_aa.split(‘/‘)[-1] + ‘.jpg‘
                        filename = image_aa.split(‘/‘)[-1] + ‘.jpg‘

                        # 下载图片
                        # request.urlretrieve(image_aa, filename)
                        ver = {}
                        ver[‘filename‘] = filename
                        sql = ‘insert into jiepai(filename) values("{filename}")‘.format(**ver)
                        mc = mysql_conn()
                        mc.execute_modify_mysql(sql)
                    except TimeoutError:
                        print(‘下载超时‘)
                        continue
            else:
                print(‘没有那个文件‘)
                continue
#文件名 mysql_tu.py

import pymysql

class mysql_conn(object):
    # 魔术方法, 初始化, 构造函数
    def __init__(self):
        self.db = pymysql.connect(host=‘127.0.0.1‘, user=‘root‘, password=‘lxh1122‘, port=3306, database=‘py11‘)
        self.cursor = self.db.cursor()

    # 执行modify(修改)相关的操作
    def execute_modify_mysql(self, sql):
        self.cursor.execute(sql)
        self.db.commit()

    # 魔术方法, 析构化 ,析构函数
    def __del__(self):
        self.cursor.close()
        self.db.close()

if __name__==‘__main__‘:
    sql = ‘insert into jiepai values ()‘
    mc = mysql_conn()
    mc.execute_modify_mysql(sql)
    sql = ‘insert into jiepai values ()‘

    mc.execute_modify_mysql(sql)
    sql = ‘insert into jiepai values ()‘

    mc.execute_modify_mysql(sql)
    sql = ‘insert into jiepai values ()‘

    mc.execute_modify_mysql(sql)

原文地址:https://www.cnblogs.com/lxh777/p/9490895.html

时间: 2024-10-01 07:32:12

今日头条街拍图片爬取的相关文章

ajax爬取今日头条街拍图片——data出现none的解决

之前爬取总是出现如图的结果:手动打开url显示的是想要的结果,但是爬取的时候data为空 尝试了多种方法,偶然得到了想要的结果: 这是多次实验中成功与不成功结果中构造的url 发现 1)得到想要结果,所构造的url中keyword=******与下一参数间没有&链接 2)同样的keyword=%E8%A1%97%E6%8B%8D,参用不同的方式:‘https://www.toutiao.com/api/search/content/?keyword=%E8%A1%97%E6%8B%8D’+url

Python-爬虫-抓取头条街拍图片-1.1

下面实例是抓取头条图片信息,只是抓取了查询列表返回的json中image,大图标,由于该结果不会包含该链接详情页的所有图片列表:因此这里抓取不全:后续有时间在完善: 1.抓取头条街拍相关图片请求如下: 2.通过debug可以看到请求参数以及相应结果数据: 3.响应结果,比较重要的是data(group_id,image_list.large_image_url等字段): 主程序如下: 抓取图片信息保存本地,然后将图片组和图片信息保存至mysql数据库: 1 #今日头条街拍数据抓取,将图片存入文件

芝麻HTTP:分析Ajax爬取今日头条街拍美图

本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 1. 准备工作 在本节开始之前,请确保已经安装好requests库. 2.实战演练 首先,实现方法get_page()来加载单个Ajax请求的结果.其中唯一变化的参数就是offset,所以我们将它当作参数传递,实现如下: import requests from urllib.parse import urlencode def

【Python3网络爬虫开发实战】 分析Ajax爬取今日头条街拍美图

前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:haoxuan10 本节中,我们以今日头条为例来尝试通过分析Ajax请求来抓取网页数据的方法.这次要抓取的目标是今日头条的街拍美图,抓取完成之后,将每组图片分文件夹下载到本地并保存下来. 准备工作在本节开始之前,请确保已经安装好requests库.如果没有安装,可以参考第1章.另外如果你对python的库不是很熟的话,建议先去小编的Python交流.裙 :一久武其而而流

Ajax爬取今日头条街拍美图

1.打开今日头条:https://www.toutiao.com 2.搜索街拍 3.检查元素,查看请求发现在URL中每次只有offset发生改变,是一个get请求 1 import requests 2 from urllib.parse import urlencode 3 import os 4 from hashlib import md5 5 from multiprocessing.pool import Pool 6 7 def get_page(offset): 8 params

分析Ajax爬取今日头条街拍美图

1 import os 2 import requests 3 from urllib.parse import urlencode 4 from hashlib import md5 5 from multiprocessing.pool import Pool 6 7 GROUP_START = 1 8 GROUP_END = 5 9 10 def get_page(offset): 11 params = { 12 'offset': offset, 13 'format': 'json'

ajax分析-今日头条街拍美图抓取

我们知道,有时候直接利用requests请求得到的原始数据是无效的,因为很多时候,这样获取的一个网页的源代码很可能就几行,明显不是我们想要的东西,这个时候,我们就可以分析,这样的网页中是不是加入了ajax请求,即原始页面加载完成后,会再向服务器请求某个接口去获取数据,然后才被呈现到网上的. ajax并不是一门语言,而是一门技术,它可以在页面不被刷新的情况下,利用javascript进行数据交换,渲染网页进而呈现,我们平时用手机刷微博,往下拉就会出现加载的小圆圈,那个就是加入了ajax请求. 所以

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

通常我们从网页上爬取内容时,都是HTML代码,内容都已经写好了,直接从页面获取想要的信息即可,但是有的网页是通过ajax获取的数据,将ajax获取的数据通过json格式接受,然后展示在页面上的,也就是说,当我们打开一个页面时,首先请求的是他的html,然后HTML里面通过ajax获取后端数据,将数据以json格式展示在页面上.而近日头条就是这样.下面我们来看看. 我们打开链接:https://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D,我

scrapy之360图片爬取

#今日目标 **scrapy之360图片爬取** 今天要爬取的是360美女图片,首先分析页面得知网页是动态加载,故需要先找到网页链接规律, 然后调用ImagesPipeline类实现图片爬取 *代码实现* so.py ``` # -*- coding: utf-8 -*- import scrapy import json from ..items import SoItem class SoSpider(scrapy.Spider): name = 'so' allowed_domains =