여동생 그림 파충류,가장 중요 한 것 은 헤더 에'Referer'설정 을 요청 하 는 것 입 니 다.http://www.mzitu.com/'

9524 단어 python
1 웹 소스 코드 가 져 오기 및 http 요청 헤더 설정
import requests
from bs4 import BeautifulSoup
import os

headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
                        "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}

url = 'http://www.mzitu.com/all/'

start_html = requests.get(url,headers = headers)   #    
# print(start_html.text)            #      

2 BeautifulSoup 모듈 분석 페이지
Soup = BeautifulSoup(start_html.content,'lxml')
      
with open('yuanma.html','wb') as f:
    #f.write(Soup .text)   #       ,     #

    :
TypeError: a bytes-like object is required, not 'str'
    : str  bytea = bytes(Soup.text,'utf-8')

3.분석 후 해당 하 는 탭 을 가 져 오고 폴 더 를 만 듭 니 다.
all_a = Soup.find('div',class_='all').findAll('a')
for a in all_a:

    # print(a,type(a))   #'bs4.element.Tag'>  
    title = a.text    #   title = a.get_text()
    path = str(title).strip()
    os.makedirs(os.path.join(path))
    :NotADirectoryError: [WinError 267]       。: ' -KiKi:    ,           '

    :         
     :
n=0
for a in all_a:
    n += 1
    m = str(n)
    # print(a,type(a))   #'bs4.element.Tag'>  
    title = a.get_text()   #   title = a.get_text()
    title = title.replace('?',' ')
    title = title.replace(':',' ')
    path = str(title).strip()
    try:
        os.makedirs(os.path.join(all_path,path))
    except NotADirectoryError and OSError as e:
        print(e)
        os.makedirs(os.path.join(all_path,'    '+m))

4 탭 의 단일 페이지 가 져 오기
href = a['href']

5 단일 페이지 의 원본 코드 를 가 져 오고 분석 합 니 다.12 단계 와 유사 합 니 다.
6.여동생 그림 요청 헤더 추가:
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
                        "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
           ,'Referer':'http://www.mzitu.com/',}
# Referer   

최종 코드:
import requests
from bs4 import BeautifulSoup
import os

headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
                        "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
           ,'Referer':'http://www.mzitu.com/',}

url = 'http://www.mzitu.com/all/'

start_html = requests.get(url,headers = headers)   #    
# print(start_html.text)            #      

Soup = BeautifulSoup(start_html.content,'lxml')
all_a = Soup.find('div',class_='all').findAll('a')

# print(os.getcwd())
all_path = os.getcwd()+'\\tupian\\'
# print(all_path)


b = 0
for a in all_a:
    # print(a,type(a))   #  
    title = a.get_text()   #   title = a.get_text()
    title = title.replace('?',' ')
    title = title.replace(':',' ')
    path = str(title).strip()
    # print('   ')
    try:
        os.makedirs(os.path.join(all_path,path))   #os.path.join             
        os.chdir(all_path+path)
        b += 1
    except FileExistsError:
        continue
    except NotADirectoryError and OSError as e:
        print(e)
        break
    # print('  ')
    href = a['href']
    print(href)
    html = requests.get(href,headers=headers)
    html_Soup = BeautifulSoup(html.text, 'lxml')
    max_span = html_Soup.find('div', class_='pagenavi').find_all('span')[-2].get_text()   #          
    count = 0
    for page in range(1,int(max_span)+1):
        page_url = href + '/' +str(page)
        img_html = requests.get(page_url,headers = headers)
        #    
        img_Soup = BeautifulSoup(img_html.content,'lxml')



        tupian = img_Soup.find('div',class_='main-image').find('img')['src']
        name = tupian[-9:-4]
        tp = requests.get(tupian,headers=headers)
        with open(name + '.jpg', 'ab') as f:
            f.write(tp.content)
        count +=1
        if count >= 1:   #            
            break
    if b >= 3:    #       ,       
        break

# x = requests.get('http://images2015.cnblogs.com/blog/140867/201601/140867-20160103115154339-792142004.png',headers=headers)
# print(x.content)
# f = open('1'+'.jpg','ab')
# f.write(x.content)
# f.close()

좋은 웹페이지 즐겨찾기