吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11747|回复: 38
上一主题 下一主题
收起左侧

[Python 转载] 小白爬写真套图

  [复制链接]
跳转到指定楼层
楼主
mayixb 发表于 2020-5-10 11:26 回帖奖励
www.xgmn.org这个写真网站的套图质量不错,内容丰富 ,不喜欢整个爬取,喜欢哪个爬哪个

[Python] 纯文本查看 复制代码
from fake_useragent import UserAgent
import requests,os
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor

IMG_URLS=[]

#随机获取请求头
def get_headers(u):
    ua=UserAgent()
    return {'user-agent': ua.random,'referer': u}

#解析套图首页
def parse_page(url):
    res=requests.get(url,get_headers(url))
    res.encoding='GB2312'
    html=BeautifulSoup(res.text,'lxml')
    return html

#获取套图内写真的url
def get_img_url(url):
    html=parse_page(url)
    img_urls=[]
    temp=html.select('div.img p img')
    for i in temp:
        img_urls.append('https://www.xgmn.org%s' % i['src'])
    IMG_URLS.extend(img_urls )
    return img_urls

#获取写真套图的名称
def get_name(html):
    name=html.select('div.title')[0].get_text()
    return name

#获取写真套图每一页的地址
def get_page_list(html):
    page_list=[]
    temp=html.select('div.page')[0]
    for i in temp:
        page_list.append('https://www.xgmn.org%s' % i['href'])
    page_list.pop()
    return page_list

#下载
def write(path,url):
    name=url[url.rfind('/')+1:]
    with open(path+name,'wb') as f:
        f.write(requests.get(url,headers=get_headers(url)).content)
if __name__ == '__main__':
    #需要爬学的写真套图地址
    url='https://www.xgmn.org/Xgyw/Xgyw6684.html'
    #要保存到本地路径
    dir=r'U:\HDTV\PIC\www.xgmn.org'
    #获取该写真套图的HTML
    html=parse_page(url)
    #获取写真套图的名称
    name=get_name(html)
    #把本地路径和写真套图的名称拼接成新的路径
    path=r'%s\%s\\' % (dir,name)
    print(path)

    if not os.path.isdir(path):
        os.makedirs(path)
    page_list=get_page_list(html)
    #打开本地的路径
    os.startfile(path)

    #创建一个线程池获取所有写真的url
    t=ThreadPoolExecutor(10)
    for u in page_list:
        t.submit(get_img_url,u)
    t.shutdown()

    #另外创建一个线程池下载所有的写真
    th = ThreadPoolExecutor(10)
    for u in IMG_URLS:
        th.submit(write,path,u)
    th.shutdown()

    print('=================下载完成')

免费评分

参与人数 4吾爱币 +3 热心值 +2 收起 理由
chen0495 + 1 我很赞同!
zjlzhok + 1 我很赞同!
pj2016 + 1 + 1 肾亏,肾亏者勿入,哈哈哈
Zeaf + 1 这年头小白一个比一个强

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
推荐
王星星 发表于 2020-5-10 11:59
提示: 作者被禁止或删除 内容自动屏蔽
推荐
shkwp 发表于 2020-11-14 11:31
lonelycoder 发表于 2020-5-13 18:14
之前的有点问题,最新的版本。下载:https://zhizhi007.lanzouj.com/ickmzih 密码:6666

测试了下新版本,用python test.py执行报错,一堆错误码,好像没反应,摘一段:
C:\Users\LENOVO>python test.py
Traceback (most recent call last):
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connection.py", line 159, in _new_conn
    conn = connection.create_connection(
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
    raise err
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python39\lib\site-packages\urllib3\connectionpool.py", line 670, in urlopen
沙发
honghai0119 发表于 2020-5-10 11:32
3#
vagrantear 发表于 2020-5-10 11:38
围观学习一波
4#
hmily65 发表于 2020-5-10 11:43
学习了,感谢分享
5#
LZDC 发表于 2020-5-10 11:44
图确实有质量啊
6#
lcylcylcy 发表于 2020-5-10 11:48
不懂,飞机不会驾驶
7#
lsweilin 发表于 2020-5-10 11:49
什么东西看不懂...
8#
523067000 发表于 2020-5-10 11:53
学习了,感谢分享
9#
风冯讽凤 发表于 2020-5-10 11:53
打包一下呗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 16:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表