关闭

python_女友排行榜

标签: python遍历排行榜
340人阅读 评论(0) 收藏 举报
分类:

这次的目标是点击打开链接

环境:Ubuntu16.10   python3.5+

这个网站的HTML编写 简单

但是有些地方感觉不对,那就是他网页有900+图,实际只显示488张,搞得我很无语,,,,,后来通过限制遍历的数量来控制



虽然说HTML写的简单,但是,,,,通过whois 查到的这个网站作者的信息却又是少之又少,,,,,,

关键是,他的服务器弄得真的是牛,,,,

一个礼拜前是直接封ip,后来来了学校,一开始摸索的时候,又有手动进入网站的防止爬虫,

后来终于可以大概的试一试的时候,有时候有会没有响应给我,,,

所以,我有学习了 import time 

用来欺骗服务器,我也是醉了,,,

后来发现有好多张,他的图片就是不对的,,然后就加入了判断+记录错误信息

哎,,,,,,,,,,,,,,,,,

# -*- coding: utf -*-
# http://www.nh87.cn/find.html
import requests
import time
from bs4 import BeautifulSoup

url='http://www.nh87.cn/find.html'
headers = {'User-Agent':  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'}
response=requests.get(url,headers=headers)
print(response.encoding)
print (response.status_code, response.reason)
response.encoding='utf-8'
# 前期
soup=BeautifulSoup(response.text,'html.parser')
ig=soup.select('img') 
# print(ig[0]['data-original'],ig[0]['alt'])
list_p=[]
list_name=[]
list_lose=[]

# 建立列表 
num=1
for i in ig[:488]:
    list_p.append(i['data-original'])
    list_name.append('Top.%d'%num+i['alt'])
    num+=1
print('>>>>the list is ok')
#下载
n=0
for s in list_p:
    if n%40==0:
        print('阶段一休息:')
        time.sleep(5)  
      
    headers = {'User-Agent':  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36'}
    response = requests.get(s, headers=headers, stream=True)
    if s=='http://www.nh87.cn':
        list_lose.append(list_name[n]+str(response.status_code))
        n+=1
        continue
    if response.status_code==200:  
        from contextlib import closing
        with closing(requests.get(s, headers=headers, stream=True)) as response:
            with open(r'/home/sun/Pictures/ny/170103/%s'%list_name[n], 'wb') as fd:
                for chunk in response.iter_content(128):
                    fd.write(chunk)
        print(list_name[n],'is ok')
    else:
        list_lose.append(list_name[n]+response.status_code)
    n+=1
print('>>>ok')
if len(list_lose)>0:
    print(list_lose)


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8826次
    • 积分:267
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:11篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论