爬虫系列,(3),达盖尔图片抓取

爬虫系列,(3),达盖尔图片抓取importreimportrequestsfrombs4importBeautifulSoup#第一步得到代理defproxy():withopen(r’ip_proxies\有效ip.txt’,’r’,encoding=’utf-8′)asf:r=f.readlines()foripinr:…

大家好,又见面了,我是你们的朋友全栈君。

import re
import requests
from bs4 import BeautifulSoup


# 第一步得到代理
def proxy():
    with open(r'ip_proxies\有效ip.txt', 'r', encoding='utf-8') as f:
        r = f.readlines()
        for ip in r:
            try:
                proxies = eval(ip)
                if requests.get('http://t66y.com/index.php', proxies=proxies, timeout=2).status_code == 200:
                    return proxies
            except:
                pass


proxies = proxy()
print(proxies)

# 第二步得到网页链接池
url = 'http://t66y.com/index.php'
url2 = 'http://t66y.com/thread0806.php?fid=16'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,\
image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
           'Accept-Encoding': 'gzip, deflate',
           'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
           'Cache-Control': 'max-age=0',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
session = requests.session()
url_response = session.get(
    url, headers=headers, proxies=proxies, timeout=3)
url_response2 = session.get(url2, timeout=3, proxies=proxies)
data = url_response2.content.decode('gbk', 'ignore')
soup = BeautifulSoup(data, features='lxml')
url_list = soup.find_all(href=re.compile("htm_data"))
url_set = set()
for i in url_list:
    try:
        url_final = 'http://t66y.com/'+i['href']
        url_set.add(url_final)
    except:
        pass


# 第三步抓取当前页的图片
n = 1


def get_jpg(url):
    global n
    response = requests.get(url, headers=headers, proxies=proxies)
    print(response.status_code)
    data = response.content.decode('gb2312', 'ignore')
    soup = BeautifulSoup(data, features='lxml')
    inputs = soup('input')
    for i in inputs:
        try:
            url_jpg = i['data-src']
            jpg = requests.get(url_jpg, headers=headers, timeout=5)
            print('第{}张'.format(n))
            jpg_content = jpg.content
            with open(r'Caoliu photo\{}.jpg'.format(n), 'wb') as f:
                f.write(jpg_content)
                print('完成')
                n = n+1
        except Exception as a:
            print(a)


if __name__ == "__main__":
    url_final_list = list(url_set)
    for i in url_final_list:
        print(i)
        get_jpg(i)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152625.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月24日 下午12:36
下一篇 2022年6月24日 下午12:36


相关推荐

  • JDK 1.8 Stream Collectors groupingBy 例子[通俗易懂]

    JDK 1.8 Stream Collectors groupingBy 例子[通俗易懂]在这篇文章中,我们将向您展示如何使用java8 Stream Collectors 对列表分组,计数,求和和排序。1.GroupBy,CountandSort1.1Groupbya List anddisplaythetotalcountofit.(按列表分组,并显示其总数)Java8Example1.javapackagecom.mkyong.java8;i…

    2022年8月20日
    20
  • sendgrid html text,使用SendGrid发送电子邮件

    sendgrid html text,使用SendGrid发送电子邮件使用 SendGrid 发送电子邮件发布时间 2020 03 0319 16 51 来源 51CTO 阅读 339 作者 mxy00000 栏目 云计算我们继续来看 AzureGlobal 的一些服务 这次来看下 Azure 中可以用来发邮件的服务 Azure 中其实没有明确可以用来发邮件的服务 因为微软本来就有 O365 能做这个事 但是像发送告警邮件这类的操作仍然可以直接借用 Azure 中的内置功能来实现 但是如果是

    2026年3月19日
    2
  • bfd简介

    bfd简介nbsp nbsp BFD 双向转发检测 一 背景 1 IGP 路由的收敛时间构成 1 失效链路检测时间 2 报告拓扑变化的新 LSA LSP 的泛洪时间 3 各路由器的路由表计算时间 包括 SPF 计算时间和路由表计算及线卡 FIB 更新时间 nbsp 2 一般路由协议的慢 Hello 机制 故障检测只是其功能之一 比如 ospf 协议 hello 报文作用 1 nbsp 发现 OSPF

    2026年3月16日
    3
  • 千问核心负责人林俊旸宣布离职

    千问核心负责人林俊旸宣布离职

    2026年3月12日
    2
  • Python—-pywin32如何获取窗口句柄

    Python—-pywin32如何获取窗口句柄Python—-pywin32如何获取窗口句柄一:介绍要用到的库二:显示窗口的属性1.获取所有窗口的句柄2.获取窗口的子窗口句柄3.获取句柄的标题4.获取窗口类名三、实际操作1.置顶和取消2.显示和隐藏窗口四、案例演示显示和隐藏托盘halo,各位读者,本栏目开设一个围绕着“如何用Python来制作PC软件”展开。当我们想用处理Windows的软件窗口时,常常会碰到想将窗口置顶、隐藏和显示等等,还有读者想将电脑托盘、任务栏等都隐藏的情况。本篇文章就是带领读者学习窗口句柄,并且如何应用Python带的

    2022年7月21日
    222
  • vue中使用onbeforeunload

    vue中使用onbeforeunload前言 onbeforeunlo 事件可以用在页面刷新前 页面关闭前 进行提示判断等相关操作 也就是说你再这个事件里面添加的操作 你点击 f5 刷新或者退出这个页面都会触发 效果图 js 和 vue 中通过案例来说明用法 一 js 中使用方法 html head title thisisidonbe title head html

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号