python豆弁にログインして文章を登ります

2251 ワード

1.まずgetリクエストを使用してログインを取得するには認証コード2が必要である.認証コードをローカルに保存し、認証コード3を手動で入力.Chromeブラウザを使用して開発モードを開き、networdで取得要求アナログログイン取得要求に必要なパラメータ4を取得する.登录成功开始爬取文章注:改demoは手を练习して记录するだけなので、丈夫さはうまく処理されていません
import requests
from lxml import etree
from PIL import Image

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'
}

#           
def get_article_data(input_code,image_id):
    form_data = {
        'source': None,
        'redir': 'https://www.douban.com',
        'form_email': '[email protected]',             #        
        'form_password': '111111',        #    
        'captcha-solution': input_code,
        'captcha-id': image_id,
        'login': '%E7%99%BB%E5%BD%95'
    }
    s = requests.session()
    #      
    login_data = s.post('https://accounts.douban.com/login', headers=header, data=form_data)
    login_selecotor = etree.HTML(login_data.content)
    article_list = login_selecotor.xpath('//div[@data-uid = "900117594"]')
    for article in range(len((article_list))):
        print login_selecotor.xpath("//div[@class='title']/a/text()")[article].encode('utf-8')

#       
def save_and_show_code(url):
    #     
    image_content = requests.get(url, headers=header)
    #        
    with open('code.jpg', 'wb') as fp:
        fp.write(image_content.content)
    #   PIL    
    img = Image.open('code.jpg')
    img.show()


def mian():
    #  get       ,       
    login_html = requests.get("https://accounts.douban.com/login", headers=header)
    # print login_html.content
    selector = etree.HTML(login_html.text)
    #             
    image_code = selector.xpath('//*[@id="captcha_image"]/@src')[0]
    #        id
    image_id = image_code.split('=')[1].split('&')[0]
    #     
    save_and_show_code(image_code)
    #          
    input_code = None
    input_code = raw_input(u'        ')
    #          
    get_article_data(input_code,image_id)

if __name__ == '__main__':
    mian()