返回顶部
首页 > 资讯 > 后端开发 > Python >scrapy的一些容易忽视的点(模拟登陆
  • 741
分享到

scrapy的一些容易忽视的点(模拟登陆

scrapy 2023-01-31 00:01:03 741人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

scrapy爬虫注意事项 一、item数据只有最后一条 这种情况一般存在于对标签进行遍历时,将item对象放置在了for循环的外部。解决方式:将item放置在for循环里面。   二、item字段传递后错误,混乱 有时候会遇到这样

scrapy爬虫注意事项

一、item数据只有最后一条

这种情况一般存在于对标签进行遍历时,将item对象放置在了for循环的外部。解决方式:将item放置在for循环里面。


 

二、item字段传递后错误,混乱

有时候会遇到这样的情况,item传递几次之后,发现不同页面的数据被混乱的组合在了一起。这种情况一般存在于item的传递过程中,没有使用深拷贝。解决方式:使用深拷贝来传递item。


 

三、对一个页面要进行两种或多种不同的解析

这种情况一般出现在对同一页面有不同的解析要求时,但默认情况下只能得到第一个parse的结果。产生这个结果的原因是scrapy默认对拥有相同的url,相同的body以及相同的请求方法视为一个请求。解决方式:设置参数dont_filter='True'。


 

四、xpath中contains的使用

这种情况一般出现在标签没有特定属性值但是文本中包含特定汉字的情况,当然也可以用来包含特定的属性值来使用(只不过有特定属性值的时候我也不会用contains了)。

作者:村上春树

书名:挪威的森林

以上面这两个标签为例(自行F12查看),两个span标签没有特定的属性值,但里面一个包含作者,一个包含书名,就可以考虑使用contains来进行提取。


 

五、提取不在标签中的文本

有时候会遇到这样的情况,文本在两个标签之间,但不属于这两个标签的任何一个。此时可以考虑使用xpath的contains和following共同协助完成任务。

示例:

作者:

"村上春树"

书名

"挪威的森林"


 

六、使用CSS、xpath提取倒数第n个标签

对于很多页面,标签的数量有时候无法保证是一致的。如果用正向的下标进行提取,很可能出现数组越界的情况。这种时候可以考虑反向提取,必要时加一些判断。


 

七、提取表格信息

其实对于信息抓取,很多时候我们需要对表格页面进行抓取。一般的方方正正的表格提取相对简单,这里不讨论。只说下含有合并单元格的情况。

以这个网页的表格为例,定义5个字段批次,招生代码,专业,招生数量以及费用,注意到合并单元格的标签里有个rowspan属性,可以用来辨识出有几行被合并。我的思路是有多少行数据,就将batch批次扩展到多少个,形成一个新的列表,然后进行遍历提取数据


 

八、模拟登陆

当页面数据需要登陆进行抓取时,就需要模拟登陆了。常见的方式有:使用登陆后的cookie来抓取数据;发送表单数据进行登陆;使用自动化测试工具登陆,比如selenium配合chrome、firefox等,不过听说selenium不再更新,也可以使用chrome的无头模式。鉴于自动化测试的抓取效率比较低,而且我确实很久没使用过这个了。本次只讨论使用cookie和发送表单两种方式来模拟登陆。

使用cookie

使用cookie的方式比较简单,基本思路就是登陆后用抓包工具或者类似chrome的F12调试界面查看cookie值,发送请求时带上cookie值即可


 

发送表单方式进行登陆

cookie是有有效期的,对于大量数据的抓取,更好的方式是发送表单进行模拟登陆。scrapy有专门的函数scrapy.FORMRequest()用来处理表单提交。网上有些人说cookie没法保持,可以考虑用我下面的方式。


 

--结束END--

本文标题: scrapy的一些容易忽视的点(模拟登陆

本文链接: https://lsjlt.com/news/181616.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • scrapy的一些容易忽视的点(模拟登陆
    scrapy爬虫注意事项 一、item数据只有最后一条 这种情况一般存在于对标签进行遍历时,将item对象放置在了for循环的外部。解决方式:将item放置在for循环里面。   二、item字段传递后错误,混乱 有时候会遇到这样...
    99+
    2023-01-31
    scrapy
  • 容易被忽视的JavaScript细节有哪些
    今天就跟大家聊聊有关容易被忽视的JavaScript细节有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。语句/表达式换个角度理解语句(state...
    99+
    2024-04-02
  • Linux下容易被忽视的命令有哪些
    这篇文章给大家分享的是有关Linux下容易被忽视的命令有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言工作中发现很多同学对于Linux下的命令不太熟悉,尤其是一些功能强大的工具,使用者很少。正所谓工欲...
    99+
    2023-06-16
  • 哪些是容易被忽视的Win8系统技巧
      Win8系统作为最新的系统发布已经有一年多的光景了,但是我们在使用Win8的过程中并没有完全感受到系统所带给我们的强大感觉,而是觉得有些不如意。这些感觉相信很多的系统用户都能体会,我们是不是在使用中忽略了些那些东西,...
    99+
    2023-06-03
    Win8系统技巧 技巧 系统 Win8
  • Python面向对象编程最容易忽视的知识点有哪些
    这篇文章主要介绍“Python面向对象编程最容易忽视的知识点有哪些”,在日常操作中,相信很多人在Python面向对象编程最容易忽视的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python面向对...
    99+
    2023-06-02
  • SEO中容易被忽视的细节分析有哪些
    这篇文章主要为大家展示了“SEO中容易被忽视的细节分析有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SEO中容易被忽视的细节分析有哪些”这篇文章吧。第一,标签的应用,建设比较早的站容易出现...
    99+
    2023-06-13
  • Python初学者容易忽略的一些细节
    1、Python中当让给变量1赋值上变量2的值时,变量1直接指向值在内存中存储的地址,即变量1存储的是变量2的值而不是指向变量   2、"""的用法 1.多行注释 2.多行输出 3、格式化输出的三种方法 1.字符串拼接(占用内存大慎...
    99+
    2023-01-31
    初学者 细节 Python
  • 容易被忽视的Linux安全权限配置问题有哪些
    小编给大家分享一下容易被忽视的Linux安全权限配置问题有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、太宽的权限有些服务对权限的要求会是一个区间,小了不行,大了也不行。如果这个文件被赋予的权限不够,那么肯定不能使...
    99+
    2023-06-16
  • 原生态Java 程序员容易忽视的编程细节有哪些
    今天就跟大家聊聊有关原生态Java 程序员容易忽视的编程细节有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是Java程序设计语言和Java平台的总称,要想学好一门语言,...
    99+
    2023-06-17
  • 企业网站在建设环节中容易忽视的问题有哪些
    本篇内容介绍了“企业网站在建设环节中容易忽视的问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  第一,定位问题。很多企业网站对于网...
    99+
    2023-06-10
  • 容器重定向的实现中,Go语言开发技术有哪些不容忽视的特点?
    容器重定向是一种常见的网络技术,可以实现将一个或多个端口从一个容器映射到另一个容器或主机上。这种技术在容器化的应用程序中非常常见,尤其是在微服务架构中。 Go语言是一种非常适合开发容器重定向的语言,因为它具有以下不容忽视的特点: 并发编...
    99+
    2023-10-31
    重定向 容器 开发技术
  • JAVA 并发容器的一些易出错点你知道吗
    目录并发容器ListSetMapQueue单端阻塞队列双端阻塞队列单端非阻塞队列双端非阻塞队列有界与无界队列总结并发容器 与同步容器一样,并发容器在总体上也可以分为四大类,分别为:L...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作