吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 21282|回复: 115
上一主题 下一主题
收起左侧

[Python 转载] 【python爬虫】福利,手把手教你python爬取美足船袜网源码!

  [复制链接]
跳转到指定楼层
楼主
huguo002 发表于 2019-11-4 21:36 回帖奖励
【python爬虫】福利,手把手教你python爬取美足船袜网源码!
【python爬虫】福利,手把手教你python爬取美足船袜网源码!

[Python] 纯文本查看 复制代码
#[url]http://mzsock.com[/url] 美足船袜网
# -*- coding: UTF-8 -*-

import requests
import re,os
import time
from urllib import request
from fake_useragent import UserAgent


class Mzsock():
    def __init__(self):
        self.ua=UserAgent()
        self.headers={"User-Agent":self.ua.random}

    def get_categroy_url(self):
        url="http://mzsock.com"
        response=requests.get(url,headers=self.headers).text
        ul=re.findall(r'<ul id="chenxing_menu" class="cx_menu l">(.+?)</ul>',response,re.S)[0]
        categroy_urls=re.findall(r'<li id=".+?"><a href="(.+?)">.+?</a></li>',ul,re.S)[1:-1]
        return categroy_urls

    def get_urllist(self,categroy_urls):
        urllist=[]
        for url in categroy_urls:
            response=requests.get(url,verify=False,headers=self.headers).text
            num=re.findall(r'</i>共找到.+?>(.+?)</em>篇帖子</span>',response,re.S)[0]
            pagenum=round(int(num)/20) #取整,四舍五入
            print(pagenum)
            for i in range(1,pagenum+1):
                pageurl=f'{url}page/{i}/'
                urllist.append(pageurl)
        return urllist

    def get_contentlist(self,urllist):
        contentlist=[]
        for url in urllist:
            response = requests.get(url,headers=self.headers).text
            div=re.findall(r'<ul class="post-list cl" id="post-list">(.+?)</ul>',response,re.S)[0]
            hrefs=re.findall(r'<a class="img" href="(.+?)" title=".+?" target="_blank">',div,re.S)
            contentlist.extend(hrefs)
            print(hrefs)
        return contentlist

    def get_content(self,contentlist):
        for url in contentlist:
            response = requests.get(url,headers=self.headers).text
            h1=re.findall(r'<h1>(.+?)[(](.+?)[)]</h1>',response,re.S)[0]
            title=h1[0]
            title= re.sub(r'[\|\/\<\>\:\*\?\\\"]', "_", title)  # 剔除不合法字符
            print(title)
            os.makedirs(f'mzsock/{title}/',exist_ok=True) #创建目录
            page_num = h1[1][6:-7]
            page_num = page_num.split('/')[1]
            print(page_num)
            for i in range(1,int(page_num)+1):
                content_url=f'{url[:-5]}_{i}.html'
                content_response = requests.get(content_url, headers=self.headers).text
                div=re.findall(r'<div class="picsbox picsboxcenter chenxing_pic_images">(.+?)</div>',content_response,re.S)[0]
                img_urls=re.findall(r'<img src="(.+?)"  alt=".+?" width',div,re.S)
                x=1
                for img_url in img_urls:
                    img_name=f'{i}_{x}{img_url[-4:]}'
                    self.bctp(f'mzsock/{title}/', img_url, img_name)
                    x=x+1

    def bctp(self,lj, img_url, img_name):
        print("开始下载图片!")
        try:
            r = requests.get(img_url, timeout=5, headers=self.headers)
            with open(f'{lj}/{img_name}', 'wb') as f:
                f.write(r.content)
                print(f'下载{img_name}图片成功!')
                time.sleep(1)
        except Exception as e:
            if "port=443): Read timed out" in str(e):
                time.sleep(2)
                try:
                    r = requests.get(img_url, timeout=5, headers=self.headers)
                    with open(f'{lj}/{img_name}', 'wb') as f:
                        f.write(r.content)
                        print(f'下载{img_name}图片成功!')
                except Exception as e:
                    print(f'下载{img_name}图片失败!')
                    print(f'错误代码:{e}')
                    with open(f'{lj}/spider.txt', 'a+', encoding='utf-8') as f:
                        f.write(f'错误代码:{e}---下载 {img_url} 图片失败\n')
            else:
                print(f'下载{img_name}图片失败!')
                print(f'错误代码:{e}')
                with open(f'{lj}/spider.txt', 'a+', encoding='utf-8') as f:
                    f.write(f'错误代码:{e}---下载 {img_url} 图片失败\n')


if __name__ == '__main__':
    spider=Mzsock()
    categroy_urls=spider.get_categroy_url()
    urllist=spider.get_urllist(categroy_urls)
    contentlist=spider.get_contentlist(urllist)
    spider.get_content(contentlist)







相关教学贴:

【福利】从零开始,手把手教你python爬取美足船袜网!

免费评分

参与人数 14吾爱币 +17 热心值 +14 收起 理由
52小柯柯 + 1 + 1 网不网的无所谓,我就是来看看爬虫
不败的意志 + 1 + 1 我很赞同!
rumengchuxing + 1 + 1 热心回复!
kaixin365days + 1 + 1 谢谢@Thanks!
路漫漫w + 1 + 1 热心回复!
泽哥 + 1 + 1 谢谢@Thanks!
seattle^-^ + 1 + 1 谢谢@Thanks!
hzy245955755 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
PureRookie + 1 + 1 热心回复!
okita + 1 + 1 我很赞同!
waltzofjack + 2 + 1 我很赞同!
生如上善若水 + 1 + 1 谢谢@Thanks!
micen + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
liqi 发表于 2019-11-15 18:41
这个玩意,之前在七月份我刚刚接触爬虫的时候,一个老哥发这个网站问问能爬吗?我直接拒了他,我怎么可能是这种好se之徒呢???
第二天,这个网站被我爬了3.4g的图片给崩了
晚上我独自享受着这些,最后全删了,md什么玩意,啥都不漏
推荐
凹凸曼大人 发表于 2019-11-4 22:49
python3.6  实测错误  fake_useragent 已经没有了。 只有 my_ fake_useragent   就算改了还是错误 。。
沙发
王二牛 发表于 2019-11-4 21:52
3#
Shuar耍耍 发表于 2019-11-4 21:59
爬下来的有味吗
4#
甘愿堕落 发表于 2019-11-4 22:09
手机可不可以运行py
5#
R大大 发表于 2019-11-4 22:10
太刺激了吧,老哥
6#
gerrardqhy 发表于 2019-11-4 22:18
能不能爬小草的 亲
7#
H_J_S 发表于 2019-11-4 22:22
看起来很厉害的样子
8#
凹凸曼大人 发表于 2019-11-4 22:32
赞一个  纯正则表达式 厉害啊 。  我只会beautifulsoup的
9#
a517753728 发表于 2019-11-4 22:40
品如的衣服   你好sao啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-16 15:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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