spider crawl [name] #name在下图
如果想在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很快的被开发者采用来当作小型查询语言。
- xpath使用路径表达式在xml和html中进行导航
- xpath包含标准函数库
- xpath是一个w3c的标准,是脱离语言存在的
xpath节点关系
- 父节点
- 子节点
- 同袍节点
- 先辈节点
- 后代节点
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了
特性
- 可以停止得函数
如果出现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__"之下的代码块不被运行。
---------------------------------------------以下是注释--------------------------------------------
- 填写python不同版本的文件路径。如:C:UsersLenovoAppDataLocalProgramsPythonPython38-32python.exe ↩
- 贪婪匹配是一直从左向右匹配到最后一个满足条件的字符串 ↩
- 大写字母小写字符数字和下划线 ↩
- 假定1E个url,1000000002byte50字符/1024/1024/1024 = 9G ↩
- 假定1E个url,100000000bit/8bypt/1024kb/1024m = 12m ↩
- 默认创建在当前目录 ↩
- PyCharm ↩
- 需要引用sys和os ↩
- https://www.cnblogs.com/cxd4321/archive/2007/09/24/903917.html ↩
- 默认scrapy会创建好piplines.py文件 ↩
- 需要引用requests包 ↩
完全个人研究,有错希望大神纠正。也可留下您的联系方式,共同探讨
——————————————————————————————————
作者:Henny_CHN
转载请标明出处,原文地址:
本文地址:http://lianchengexpo.xrbh.cn/quote/12446.html 迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多