CSS选择器提取数据,而HTML涉及内容的补充。 二、CSS选择器介绍三、实操1、前提2、代码实现方法介绍、Pycharm debug、黑窗首先进入虚拟环境,然后进入shell 3、数据提取(1)文章标题. post-item--
一、HTML涉及内容补充:
1、HTML标签是尖括号中的关键字HTML
2、开始标签title和结束标签/title配对出现,称为双标签
3、也有单标签img
4、双标签关系:包括关系和并行关系
5、标签属性标签内容/
二. css选择器介绍
第一张公式很常用。
三、实操1、前提是继续继承scrapy框架(2)入口文件中的bokeyuanSpider和main入口文件
2、代码实现方法介绍、Pycharm debug 、黑窗首先进入虚拟环境workon envName
然后,shell脚本https://www.cnblogs.com/执行此语句后,显示“”并进入python
3、数据提取我们要爬的是博客公园首页的文章标题、作者昵称、文章网站、发布时间、点赞数、评论数以及浏览数。
)1)文章标题
首先查看标题的标签,因为标签的属性中有class,所以我们考虑用它。
response.CSS (.post-item-title :3360 text ) ) (extract ) )分解并执行语句,以了解各个部分的具体作用
. post-item-title response.CSS (.post-item-title ) )。
得到的实际上是scrapy.selector.unified.selector list对象
:text是指贴上标签的内容response.CSS (.post-item-title 3360: text )
检索数据的类型也是对象
.extract(response.CSS ).post-item-title3360:text ).extract ) )。
类型是列表列表,这才是我们真正需要的数据
)2)作者昵称
可以看出其中没有属性id,也没有属性class,所以需要搜索子标签
上一个级别的标签包含class
所以.用空格表示下一层
response.CSS (.post-item-authorspan :3360 text ().extract ) )。
)3)报道url href是标签的属性
response.CSS ('.post-item-title : attr (href ) '.extract ) ) :attr属性名称
(4)发布时间
乍一看和作者名字的形状一样,但是试着用上面的形式提取一下吧
response.CSS (.post-meta-item span :3360 text ) (.extract ) )。
我发现这个数据有噪声。 回到开发人员工具,看看问题出在哪里。
利用它来说明Chrome开发人员工具如何查找匹配的代码。 Ctrl F后,下面会显示一个搜索框。
可以看到两个class=post-meta-item排列在一起,因此代码需要进一步改进。
具有发布时间的标签的span,另一个是a标签,所以在.之前添加标签的类型:
response.CSS (span.post-meta-item span :3360 text ' ).extract () ) ) ) )。
为了更好地理解这个操作,试着分别提取噪声
)点赞数、评论数、阅读数
从代码来看,点赞数、评论数、阅读数的span标签都与svg标签呈并行关系,a标签中含有span标签,因此,时间提取时的噪声数据是应该在这个步骤中提取的数据。
response.CSS (a.post-meta-item span :3360 text ) ) )。
分别提取各种数据的方法有两种
步长
点赞数从0开始,步骤为2; 评论数从1开始,步长为2; 阅读数从2开始升级,为2。
剩余
因为三个值是一组文章数据,所以列表索引除以3,馀数为0表示点赞数,馀数为1表示评论数,馀数为2表示浏览数。
# article _ nums=response.CSS (a.post-meta-item span 3360: text ).extract ) thumbsup=[]# 赞扬comments=的阅读量forIinrange(Len(Article_nums ) ) :if ) I%3==0) :thumbsup.append ) article_nums[I] (注意:调试的是门户文件main.py,具体为scrapy框架)2) :可以查看门户文件。 )
四、总结标签属性有类,提取的是标签内容(:text和. extract ) )
response.CSS (.post-item-title :3360 text ) (.extract ) )标记属性包含class,并提取了下一级标记span的内容(空间)
response.CSS (.post-item-authorspan 33603360 text ().extract ) )标记属性具有class,提取的是标记属性的内容(:attr ) )
response.CSS (.post-item-title 33603360 attr (href ) ) )标签的属性包含class,提取的是下一级标签span的内容,但span标签
response.CSS (span.post-meta-item span :3360 text ' ).extract )上述代码链接: Git链接