推广 热搜:   公司  快速  企业  中国  设备    上海  行业  未来 

Scrapy网络爬虫实战记录(一)

   日期:2024-10-31     移动:http://keant.xrbh.cn/quote/12446.html

spider crawl [name]  #name在下图

Scrapy网络爬虫实战记录(一)

如果想在pc中使用debug
 则需要新建一个main.py然后使用pc来代替执行当前命令
 需要引用

from scrapy.cmdline import execute

获取项目根目录[8]

os.path.dirname(os.path.abspath(__file__))

将一个目录放到python的搜索目录当中

sys.path.append()

执行命令(因为要debug,所以此命令相当于代替cmd命令)

execute(["scrapy","crawl","jobbole"])

然后在main函数下debug

然后看一下parse里面的response

xpath简介

XPath即为XML路径语言(XML Path Language,它是一种用来确定XML文档中某部分位置的语言。
 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言。

  1. xpath使用路径表达式在xml和html中进行导航
  2. xpath包含标准函数库
  3. xpath是一个w3c的标准,是脱离语言存在的

xpath节点关系

  1. 父节点
  2. 子节点
  3. 同袍节点
  4. 先辈节点
  5. 后代节点

xpath语法[9]

xpath使用

浏览器中会给我们提供元素xpath

提取url(此方法太过依赖于id所以并不适用)

图中extract为获取全部,extract_first为获取第一个
 
下面进行优化

在scrapy分两次取元素时,第二次路径一定要使用 .
 例如下图。取当前节点下所有的img元素,就要使用https://blog.csdn.net/a1234012340a/article/details//
 例如下图。取当前节点下img元素,就要使用https://blog.csdn.net/a1234012340a/article/details/

CSS选择器语法

CSS选择器使用

response.css('CSS语法').extract()

需要引用

from scrapy import Selector

然后如下图把html源代码赋给Selector的text中,就可以使用选择器了

parse方法

一般来说parse方法都是用来做抓取策略的而不是用来解析的。要有单独的方法来进行解析

一旦使用了yield,会直接把url请求会立马交给scrapy进行下载
 可以使用meta传递参数


callback指request之后要执行什么

:如果写parse_detail()则callback赋值的就是这个方法的返回值了。就不是把方法赋给callback了

特性

  1. 可以停止得函数

如果出现yield则此函数就变成了特殊的函数。整个函数得返回值就变成了generator对象。如需读取应使用循环或者next迭代。截图如下

定义对象之后

没定义

yield只可以yield request 和 yield item 不可以是其他的
 如果是request这里默认会走scrapy的下载逻辑
 如果是item这里默认会走piplines[10]
,这里如何处理是自己定义好的

进入虚拟环境

scrapy shell 路径

items的定义和使用

使用时记录

查不出内容怎么办

原因:这里查询得只是服务器返回得原始html(右键查看源代码,并不会查询js执行过后得html

解决

有可能此值被写到当前html文件得其他部分

寻找请求的接口。进行数据解析[11]

 这里尽量不要使用同步的方法来执行,所以应该使用yield,当然对于少量数据。直接同步调用也是没有问题的

if __name__ == "__main__"什么作用

通俗的理解if __name__ == "__main__":假如你叫小明.py,在朋友眼中,你是小明(__name__== '小明');在你自己眼中,你是你自己(if __name__ == "__main__")。

if __name__ == "__main__"的意思是:当.py文件被直接运行时if __name__ == "__main__"之下的代码块将被运行;当.py文件以模块形式被导入时if __name__ == "__main__"之下的代码块不被运行。

---------------------------------------------以下是注释--------------------------------------------

  1.  填写python不同版本的文件路径。如:C:UsersLenovoAppDataLocalProgramsPythonPython38-32python.exe ↩
  2.  贪婪匹配是一直从左向右匹配到最后一个满足条件的字符串 ↩
  3.  大写字母小写字符数字和下划线 ↩
  4.  假定1E个url,1000000002byte50字符/1024/1024/1024 = 9G ↩
  5.  假定1E个url,100000000bit/8bypt/1024kb/1024m = 12m ↩
  6.  默认创建在当前目录 ↩
  7.  PyCharm ↩
  8.  需要引用sys和os ↩
  9.  https://www.cnblogs.com/cxd4321/archive/2007/09/24/903917.html ↩
  10.  默认scrapy会创建好piplines.py文件 ↩
  11.  需要引用requests包 ↩

完全个人研究,有错希望大神纠正。也可留下您的联系方式,共同探讨
——————————————————————————————————

作者:Henny_CHN

转载请标明出处,原文地址:  

本文地址:http://lianchengexpo.xrbh.cn/quote/12446.html    迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关行业动态
推荐行业动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号