Python模拟登入豆瓣网,并爬取小组信息

import requests
from bs4 import BeautifulSoup
from PIL import Image

headers = {
    ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36‘,
    ‘Referer‘:‘https://accounts.douban.com/login?alias=&redir=https%3A%2F%2Fwww.douban.com%2F&source=index_nav&error=1001‘

}

session = requests.Session()
session.headers.update(headers)

username = input(‘请输入你的用户名:‘)
password = input(‘请输入你的密码:‘)

url = ‘https://accounts.douban.com/login‘

def login(username,password,source=‘index_nav‘,redir=‘https://www.douban.com/‘,login=‘登录‘):     #模拟登入函数
    caprcha_id,caprcha_link = get_captcha(url)          #把get_captcha函数返回的值
    if caprcha_id:          #如果有caprcha_id,就执行解析caprcha_link网页信息,并把图片保存下来打开
        img_html = session.get(caprcha_link)
        with open(‘caprcha.jpg‘,‘wb‘) as f:
            f.write(img_html.content)
        try:
            im = Image.open(‘caprcha.jpg‘)
            im.show()
            im.close()
        except:
            print(‘打开错误‘)
        caprcha = input(‘请输入验证码:‘)      #把看到的验证码图片输入进去
    data = {                    #需要传去的数据
        ‘source‘:source,
        ‘redir‘:redir,
        ‘form_email‘:username,
        ‘form_password‘:password,
        ‘login‘:login,
    }
    if caprcha_id:          #如果需要验证码就把下面的两个数据加入到data里面
        data[‘captcha-id‘] = caprcha_id
        data[‘captcha-solution‘] = caprcha
    html = session.post(url,data=data,headers=headers)
    print(session.cookies.items())

def get_captcha(url):       #解析登入界面,获取caprcha_id和caprcha_link
    html = requests.get(url)
    soup = BeautifulSoup(html.text,‘lxml‘)
    caprcha_link = soup.select(‘#captcha_image‘)[0][‘src‘]
    #lzform > div.item.item-captcha > div > div > input[type="hidden"]:nth-child(3)
    caprcha_id = soup.select(‘div.captcha_block > input‘)[1][‘value‘]
    return caprcha_id,caprcha_link

login(username,password)
login_url = ‘https://www.douban.com/group/‘
xiaozu_html = session.get(login_url)
soup = BeautifulSoup(xiaozu_html.text,‘lxml‘)
#content > div > div.article > div.topics > table > tbody > tr:nth-child(1) > td.td-subject > a
titles = soup.select(‘tr.pl > td.td-subject > a.title‘)
for title in titles:
    print(title[‘href‘],title.string)
时间: 2024-08-07 00:18:47

Python模拟登入豆瓣网,并爬取小组信息的相关文章

C# 模拟登入微博,实现分享

最近自己想模拟微博登入(无验证码的情况),想分享一些歌曲.很多代码都是网上找到,现在整理一下. 1.加载我需要分享页面的数据. var httpReq = (HttpWebRequest)WebRequest.Create("http://pop.weibo.com/ajax_getdata?type=trend&date=" + DateTime.Now.ToShortDateString()); httpReq.Referer = "http://pop.weib

Python练手项目:20行爬取全王者全英雄皮肤

引言 ? ?王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. ? ?文中源代码在文章末尾,可自行复制粘贴. 准备工作 ? ?爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: ? ?我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片地址: ? ?接着,我们切换一下英雄的

[python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pythonpython爬虫正则表达式html知识总结 2016-04-07 06:13 3615人阅读 评论(4) 收藏 举报  分类: Python爬虫(23)  Python基础知识(17)  版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 这篇文章主要是介绍Pytho

爬虫学习 Python网络爬虫第三弹《爬取get请求的页面数据》

爬虫学习 Python网络爬虫第三弹<爬取get请求的页面数据> 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib.parse,在Python2中是urllib和urllib2. 二.由易到难的爬虫程序: 1.爬取百度首页面所有数据值 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 #导包 4

(原)python爬虫入门(2)---排序爬取的辽宁科技大学热点新闻

发现科大网页的源码中还有文章的点击率,何不做一个文章点击率的降序排行.简单,前面入门(1)基本已经完成我们所要的功能了,本篇我们仅仅需要添加:一个通过正则获取文章点击率的数字:再加一个根据该数字的插入排序.ok,大功告成! 简单说一下本文插入排序的第一个循环,找到列表中最大的数,放到列表 0 的位置做观察哨. 上代码: # -*- coding: utf-8 -*- # 程序:爬取点击排名前十的科大热点新闻 # 版本:0.1 # 时间:2014.06.30 # 语言:python 2.7 #--

python 爬取微博信息

新浪微博爬取的话需要设计到登录,这里我没有模拟登录,而是使用cookie进行爬取. 获取cookie: 代码: #-*-coding:utf8-*- from bs4 import BeautifulSoup import requests import time import os import sys import random reload(sys)  sys.setdefaultencoding('utf-8') user_id = 用户id cookie = {"Cookie"

Python爬取网页信息

Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初始网址,逐层查找链接,直到找到需要获取的内容. 在打开的界面中,点击鼠标右键,在弹出的对话框中,选择“检查”,则在界面会显示该网页的源代码,在具体内容处点击查找,可以定位到需要查找的内容的源码. 注意:代码显示的方式与浏览器有关,有些浏览器不支持显示源代码功能(360浏览器,谷歌浏览器,火狐浏览器等

python学习之——爬取网页信息

爬取网页信息 说明:正则表达式有待学习,之后完善此功能 #encoding=utf-8 import urllib import re import os #获取网络数据到指定文件 def getHtml(url,fname): #fname = 'C:\\Users\cuiliting\\Desktop\\weather_forecast.txt' data =[] page = urllib.urlopen(url) html = page.read() data.append(html)

常用正则表达式爬取网页信息及HTML分析总结

Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取<tr></tr>标签之间内容 2.获取<a href..></a>超链接之间内容 3.获取URL最后一个参数命名图片或传递参数 4.爬取网页中所有URL链接 5.爬取网页标题title两种方法 6.定位table位置并爬取属性-属性值 7.过滤<span></span>等标签 8.获取<script></script>等标签内容 1). 获取&