Python爬虫【八】动态网页爬虫4-爬虫实战

Python爬虫【八】动态网页爬虫4-爬虫实战

1、编程思维

(1)问题分解:把现实生活中的复杂问题,逐步拆分成容易解决的小问题;

(2)模式识别:根据已有的知识和经验,找出新问题和以前解决过的问题的相似性;

(3)抽象思维:将问题里涉及的数据抽象到数据结构(变量、列表、字典等),把数据处理过程可重复执行部分抽象成函数;

(4)算法设计:根据前三步的分析成果,设计步骤,写出算法,从而解决问题。

2、实战:自动发微博

发微博–登录微博、发送微博,用面向对象的方法重构代码

import requests


class WeiboCrawler:
    def __init__(self):
        self.session = requests.Session()
        self.headers = {
            'user-agent': '...',
            'referer': 'https://passport.weibo.cn/signin/login?...',
            'cookie': '...'
        }
        self.session.headers.update(self.headers)

    # 登录微博
    def login(self):
        login_data = {
            'savestate': '1',
            'r': 'https://m.weibo.cn/',
            'ec': '0',
            'pagerefer': 'https://m.weibo.cn/',
            'entry': 'mweibo',
            'wentry': '',
            'loginfrom': '',
            'client_id': '',
            'code': '',
            'qq': '',
            'mainpageflag': '1',
            'hff': '',
            'hfp': '',
        }
        self.session.post('https://passport.weibo.cn/sso/login', data=login_data)

    # 获取st
    def get_st(self):
        config_req = self.session.get('https://m.weibo.cn/api/config')
        config = config_req.json()
        st = config['data']['st']
        return st

    # 编写微博
    def compose(self, content):
        compose_data = {
            'content': content,
            'st': self.get_st()
        }
        compose_req = self.session.post('https://m.weibo.cn/api/statuses/update', data=compose_data)
        print(compose_req.json())

    # 发送微博
    def send(self, content):
        self.login()
        self.compose(content)


weibo = WeiboCrawler()
weibo.send('本条微博由 Python 发送')

3、爬虫注意点

  • user-agent 的请求头一定要加
  • 有些网站会根据referer来反爬虫
  • 遇到问题要分析请求、找出原因
  • 不同请求的referer可能不一样 遇到令牌(token)之类的校验,可以在网页源代码或请求中寻找
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假IT女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值