文档章节

python 基于ajax请求的妹子爬虫

o
 osc_4nmshwhm
发布于 2018/08/06 21:36
字数 335
阅读 9
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

ajax 爬虫 网址http://www.doyo.cn/tu

下拉网页

代码:

# coding=utf-8
import random
import time
from multiprocessing import Pool
import requests
from requests.exceptions import RequestException
import json
import os
import re

#    <img src="http://s2.doyo.cn/img/5a/0a/684c9e9e780a3000002e.jpg" id="big_picture">
pattern = re.compile('<img src="(.*?)" id="big_picture" />', re.S)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/65.0.3325.146 Safari/537.36 "
}
data_url = 'http://www.doyo.cn/tu/getdata'
root_url = 'http://www.doyo.cn/picture/{number}/{index}/view'
try:
    os.mkdir('mm')
    os.chdir('mm')
except:
    pass
parent_path = os.getcwd()
j = open('picinfo.json', 'w', encoding='utf-8')


def get_one_page(start):
    params = {
        "cate": "all",
        "tag": "all",
        "sort": "updatetime",
        "start": "0",
        "count": start
    }
    try:
        response = requests.get(url=data_url, params=params)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print("NetWork Error")


def get_one_data(html):
    data = json.loads(html)
    if data and 'info' in data.keys():
        for info in data.get('info'):
            yield {
                'title': info[0],
                'count': info[1],
                'pic': info[6],
                'number': info[7]
            }


def write_to_file(res):
    os.chdir(parent_path)
    j.write(json.dumps(res, ensure_ascii=False) + '\n')


def get_img_urllist(res):
    # root_url = 'http://www.doyo.cn/picture/{number}/{index}/view'
    for index in range(1, int(res.get('count')) + 1):
        yield root_url.format(number=res.get('number'), index=index)


def save_img(res):
    os.chdir(parent_path)
    try:
        os.mkdir(res.get('title'))
        os.chdir(res.get('title'))
    except:
        pass
    url_list = get_img_urllist(res)
    for imag_url in url_list:
        url = get_img_url(imag_url)
        print(url)
        try:
            filename = str(random.random())
            time.sleep(0.1)
            response = requests.get(url, headers=headers)
            with open(filename + '.jpg', 'wb') as f:
                f.write(response.content)
        except:
            pass


def get_html(url):
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        else:
            return None
    except RequestException:
        print("connection error")


def get_img_url(imag_url):
    html = get_html(imag_url)
    res = re.search(pattern=pattern, string=html)
    if res:
        return res.group(1)


def main(start):
    html = get_one_page(start)
    res = get_one_data(html)
    for each in res:
        write_to_file(each)
        save_img(each)


if __name__ == '__main__':
    start = [n * 25 for n in range(0, 1)]
    for i in start:
        main(i)
    j.close()

 

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
6
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
opm-server-mirror

代码更新 2009-11-25: 加入反爬虫功能。直接Web访问服务器将跳转到Google。 使用方法 下载index.zip 解压index.zip得到index.php 将index.php传到支持php和cURL的国外服务器上 打开 http:/...

luosheng86
2013/01/29
1K
0
漏洞检测工具--Peach Fuzzer

Peach是一种用Python编写的 Fuzzer。这种工具有助于发现并公开许多漏洞,并认为是黑客和安全团体中最流行的工具之一。为了利用Peach框架,必须创建Phthon脚本,脚本 中包含了在服务器上执行的...

匿名
2013/02/06
8.8K
1
JavaScript 服务器页--JSSP

JSSP (JavaScript Server Pages) 可以让你在 Java 的应用服务器上使用 JavaScript 生成网页。支持已有的 Java 包和嵌入式 SQL 命令。包含 Dervish 这个 JavaScript 交互操作包用于简化 Ajax...

匿名
2013/02/11
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP中的startsWith()和endsWith()函数 - startsWith() and endsWith() functions in PHP

问题: How can I write two functions that would take a string and return if it starts with the specified character/string or ends with it? 我如何编写两个带字符串的函数,如果它以......

技术盛宴
10分钟前
0
0
OSChina 周一乱弹 —— 你想用屁治疗一下谁

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Rain in the Park》- Marika Takeuchi 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
14分钟前
18
0
在C#中调用基本构造函数 - Calling the base constructor in C#

问题: If I inherit from a base class and want to pass something from the constructor of the inherited class to the constructor of the base class, how do I do that? 如果我从基类......

富含淀粉
40分钟前
7
0
用Python构建个性化智能闹钟

作者|Kumar Shubham 编译|VK 来源|Towards Data Science 你可能之前有见过有人使用Python语言构建闹钟,帮助他唤醒或提醒他一个重要的会议。 这些都是很简单,没有任何智能,他们所做的只是播...

人工智能遇见磐创
49分钟前
18
0
前端学数据结构与算法(二):数组与栈

前言 数据结构与算法有相互依存的关系,如果将这个两个又进行划分,无疑数据结构又是这座大厦的基础。首先从线性数据结构开始,介绍大家耳熟能详的数据结构-数组。因为JavaScript已经为数组封...

飞跃疯人院
58分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部