python中注意空格和tab键的使用_python中tab什么时候用_不要影响我叠Q的博客-程序员秘密

技术标签: python学习  

最近在学习scrapy框架中写爬虫,被坑爹的空格键和tab键给害惨了。上代码:

错误代码:

import scrapy
import re


class GithubSpider(scrapy.Spider):
    name = 'Github'
    allowed_domains = ['github.com']
    start_urls = ['https://github.com/login']

    def parse(self, response):
        authenticity_token = response.xpath("//input[@name='authenticity_token']/@value").extract_first()
        utf8 = response.xpath("//input[@name='utf8']/@value").extract_first()
        commit = response.xpath("//input[@name='commit']/@value").extract_first()
        post_data = dict(
                login="noobpythoner",
                password="zhoudawei123",
                authenticity_token=authenticity_token,
                utf8=utf8,
                commit=commit
        )
        yield scrapy.FormRequest(
            "https: //  github.com  /   session",
            formdata=post_data,
            callback=self.after_login
        )

    def after_login(self, response):
        # with open("./a.html", "wb", encoding="utf-8") as file:
        #     file.write(response.body.decode())
        print(re.findall("noobpythoner|NoobPythoner", response.body.decode()))
        # print(response.body.decode())

上述代码错误之处在于: scrapy.FormRequest()函数的第一个参数,这是直接从浏览器复制过来的Url地址,正是由于url地址中的空格导致了请求不成功,返回结果没有任何数据:

正确的代码:

import scrapy
import re


class GithubSpider(scrapy.Spider):
    name = 'Github'
    allowed_domains = ['github.com']
    start_urls = ['https://github.com/login']

    def parse(self, response):
        authenticity_token = response.xpath("//input[@name='authenticity_token']/@value").extract_first()
        utf8 = response.xpath("//input[@name='utf8']/@value").extract_first()
        commit = response.xpath("//input[@name='commit']/@value").extract_first()
        post_data = dict(
                login="noobpythoner",
                password="zhoudawei123",
                authenticity_token=authenticity_token,
                utf8=utf8,
                commit=commit
        )
        yield scrapy.FormRequest(
            "https://github.com/session",
            formdata=post_data,
            callback=self.after_login
        )

    def after_login(self, response):
        # with open("./a.html", "wb", encoding="utf-8") as file:
        #     file.write(response.body.decode())
        print(re.findall("noobpythoner|NoobPythoner", response.body.decode()))
        # print(response.body.decode())

这下输出结果如下:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_15054345/article/details/86826012

智能推荐

cocos studio json文件逆向装 成csd 文件_json2csd_ooomyself的博客-程序员秘密

在微信小游戏中扒了一些动画资源,确定是cocos studio导出的用node做了一个脚本逆向转换为csd原工程文件 思路是 主要是json格式转成xml 格式的逆向推理cocos studio 是 3.10版本https://gitee.com/ooomyself/json2csd...

实验4 LTI系统的时域分析_y=impulse(sys,t)_缓缓漫漫及趣的博客-程序员秘密

实验4 LTI系统的时域分析1.冲激响应:y=impulse(syt,t)2.阶跃响应:y=step(sys,t)t表示系统响应的时间抽样点向量,sys表示LTI系统模型表示系统的特性参数:sys=tf([a1,a2…][b1,b2…])a代表激励的系数,b代表响应的系数,注意各自都由最高阶向最低阶排列。3.连续时间系统的响应求解使用dsolve函数实现常系数微分方程的符号求解,dsolve(‘eq1,eq2,…’,‘cond1,cond2,…’,‘v’) ,eq代表的是各个微分方程,D1y,D

Flutter: Widget、Element 和 RenderObject之间的关系?_flutter widget object element对应关系_Forever不止如此的博客-程序员秘密

1、简单介绍:(1)Widget 树:Flutter 中万物皆为Widget(2)Render树---渲染树:渲染树节点叫做 RenderObject,这个节点里面处理布局、绘制相关的事情。(作用)把我们写的 Widget 树的信息都渲染到界面上。(3)Element 树:Widget 树是非常不稳定的,动不动就执行 build方法,一旦调用 build 方法意味着这个 Widget 依赖的所有其他 Widget 都会重新创建。(反例)如果 Flutter 直接解析 Widget树,将其转化为 Ren

百度地图聚合,获取聚合点所包含的点信息_百度地图获取聚合点内容_七侠剑客的博客-程序员秘密

百度地图聚合,查看聚合包含的点信息    由于项目需求,开发地图时需要对地图点信息进行聚合,而且还需要获取该聚合点下的点有哪些,查看相关资料,并没有对这一问题进行介绍,如何解决这个问题?    在地图初始化时,地图上的点位是我们通过接口,获取点位信息(坐标以及其他信息)形成marker,防止点位过多导致地图加载点比...

POI和POI-TL操作Word_sdaulzh的博客-程序员秘密

POI操作Word操作依赖包org.apache.poi,包括poi和poi-ooxml。创建空白Word文件 void poiCreateNewWord() { String path = "C:\\Users\\wisdom21111\\Desktop\\"; XWPFDocument document = new XWPFDocument(); try { FileOutputStream out = new Fil

罗盘旋转方向java_如何使用Android罗盘方向瞄准opengl相机?_林幽默的博客-程序员秘密

通过编写其他东西一段时间,我最终达到了一个点,我试图分离渲染,模拟和输入 . 因此,我提出了以下适用于我的解决方案 . 我没有严格测试它,但它似乎做我想要的(忽略相机胶卷) .在程序的android部分,我需要将方向设置为横向模式:android:label="@string/app_name"android:screenOrientation="landscape">>我创建了一个玩...

随便推点

hibernate的查询数据库方法_简述hibernate查询数据库的步骤_「已注销」的博客-程序员秘密

Hibernate共提供了五种查询方式。Hibernate的查询方式:OID查询OID检索:Hibernate根据对象的OID(主键)进行检索get方法Customer customer = session.get(Customer.class,1l);loadCustomer customer = session.load(Customer.class,1l);Hi...

01: 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置_reject: mpatha_xixi1067087210的博客-程序员秘密

TopNSD CLUSTER DAY01案例1:配置iSCSI服务 案例2:部署Multipath多路径环境 案例3:编写udev规则 案例4:配置并访问NFS共享1 案例1:配置iSCSI服务1.1 问题本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端:服务器上要额外配置一块硬盘 服务端安装target,并将新加的硬盘配置为iSCSI 的共享磁盘...

python制作gif动图_怎样用Python制作好玩的GIF动图_weixin_39785858的博客-程序员秘密

原标题:怎样用Python制作好玩的GIF动图作者: 景略集智https://jizhi.im/blog/post/pytogif程序员共读整理发布,转载请联系作者获得授权之前我们分享过用Python进行可视化的9种常见方式。其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表。假如电脑上没有安装ImageMagick,先去这里...

物通博联提供Modbus TCP设备连接到物联网云平台的解决方案_物通博联网关的博客-程序员秘密

物通博联工业智能网关具备多个网口串口和丰富协议库,可以适配不同Modbus TCP设备的接口和通信协议,快速轻松的访问Modbus TCP控制器(西门子、三菱、欧姆龙、施耐德、台达、汇川等),获取过程数据和诊断数据并通过5G/4G/WIFI/以太网等方式上传到物联网云平台中,远程监控设备运行状态、远程编程调试、远程上下载程序,有效提升设备智能管理水平。随着工业物联网IIOT的深度发展,越来越多工业现场的设备需要被传输到上层应用中,以实现远程监控运行状态、优化工艺流程和提高生产效率的目的。

Java数据结构和算法中文第二版.pdf免费下载_挨踢书吧的博客-程序员秘密

第二版的新颖之处。本书的第二版在第一版的基础上有所扩充,使之能更好地适应教师的计算机科学课堂教学,并使读者在阅读上更加容易。除去新增的章节,还添加了章末问题、实验和编程作业。新增章节在本版中加入了许多有趣的新内容。其中许多为编制上机作业提供了基础。这些新主题有:● 深度优先搜索和游戏模拟● 约瑟夫(Josephus)问题● 数据压缩中的赫夫曼编码● 旅行售货员问题●

推荐文章

热门文章

相关标签