scrapy中css选择器初识
由于最近做图片爬取项目,涉及到网页中图片信息的选择,所以边做边学了点皮毛,有自己的心得
百度图库是ajax加载的,所以解析json数据即可
hjsons = json.loads(response.body)
img_datas = hjsons['data']
if hjsons:
for data in img_datas:
try:
item = Bd_Item()
#print(data['fromPageTitleEnc'])
#print(data['thumbURL'])
item['img_url'] = data['thumbURL']
item['img_title'] = data['fromPageTitleEnc']
item['width'] = data['width']
item['height'] = data['height']
yield item
except:
pass
千图网抠图是分页加载
http://588ku.com/sucai/0-default-0-0-yueliang-0-1/

qt_imgs = response.css('.org-img-wrap .picture-list')
for qt_img in qt_imgs:
try:
item = Qt_Item()
img_url = qt_img.css('.img-show .lazy::attr(data-original)').extract_first()
title = qt_img.css('.img-show .lazy::attr(title)').extract_first()
size = qt_img.css('.hover-pic-detail .pic-info .info-title::text').extract_first()
#width = re.findall(r'(.*?)\*',size).extract_first()
#height = re.findall(r'\*(.*?)', size).extract_first()
#print(width)
#print(height)
#time.sleep(10)
item['qtimg_url'] = img_url
item['qtimg_title'] = title
item['size'] = size
#item['width'] = width
#item['height'] = height
yield item
except:
pass
觅元素和千图网差不多,但是选取图片链接有技巧,千图网图片可以看到有两个图片链接,其中data-original这个链接不同处理即可,但是如果选src会发现,选取出来的链接都是一样的,而且当你打开链接时发现黑色一片,我感觉这是种保护吧,但只有这一种链接该怎么办呢,于是我用正则去选择,结果发现,抓取结果中有两条链接,而第一条是无用的,第二条才是有用的,它的名字是data-src,这就好办了,只需要把src改成data-src即可成功选取。

mys_imgs = response.css('.content-wrap .w1200 .f-content .i-flow-item')
for mys_img in mys_imgs:
try:
item = Mys_Item()
img_url = mys_img.css('.img-out-wrap .img-wrap img::attr(data-src)').extract_first()
title = mys_img.css('.img-out-wrap .img-wrap img::attr(alt)').extract_first()
size = mys_img.css('.i-title-wrap a::text').extract_first()
size_detail = re.findall(r'\((.*?)\)',size)
#text = mys_img.css('.img-wrap .lazy').extract_first()
# time.sleep(10)
#img_url = re.findall(r'src="(.*?)!/fw/260/quality/90/unsharp/true/compress/true"', text)
#width = re.findall(r'(.*?)x', size_detail).extract_first()
#height = re.findall(r'x(.*?)', size_detail).extract_first()
item['mysimg_url'] = img_url
item['mysimg_title'] = title
item['size'] = size_detail
#item['width'] = width
#item['height'] = height
yield item
except:
pass
这东西有点意思,需要琢磨,以后用到再慢慢学吧
scrapy中css选择器初识的更多相关文章
- 使用scrapy中xpath选择器的一个坑点
情景如下: 一个网页下有一个ul,这个ur下有125个li标签,每个li标签下有我们想要的 url 字段(每个 url 是唯一的)和 price 字段,我们现在要访问每个li下的url并在生成的请求中 ...
- 爬虫学习笔记(2)--创建scrapy项目&&css选择器
一.手动创建scrapy项目---------------- 安装scrapy: pip install -i https://pypi.douban.com/simple/ scrapy 1 ...
- 爬虫(十一):scrapy中的选择器
Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...
- selenium中CSS选择器定位
selenium元素定位,CSS选择器定位效率会高很多. CSS选择器用于选择你想要的元素的样式的模式.表格摘自“菜鸟教程”,具体用法可去查阅 选择器 示例 示例说明 CSS .class .intr ...
- Scrapy的中Css 选择器
//通过 名为 video_part_lists 的Class 中下面的 li 标签 liList = response.css('.video_part_lists li') for li in l ...
- Scrapy基础------css选择器基础
基本语法: * 选择所有节点 #container 选择id为container的节点 .container 选择所有class包含container的节点 li a 选取所有li 下所有a节点 ul ...
- 第 13 章 CSS 选择器[上]
学习要点: 1.选择器总汇 2.基本选择器 3.复合选择器 4.伪元素选择器 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 选择器,通过选择器定位到想要设置样式的元素.目前 CSS 选择器的 ...
- 第七十节,css选择器
css选择器 学习要点: 1.选择器总汇 2.基本选择器 3.复合选择器 4.伪元素选择器 本章主要探讨 HTML5中 CSS选择器,通过选择器定位到想要设置样式的元素.目前CSS选择器的版本已经升 ...
- 初始scrapy,简单项目创建和CSS选择器,xpath选择器(1)
一 安装 #Linux: pip3 install scrapy #Windows: a. pip3 install wheel b. 下载twisted http://www.lfd.uci.edu ...
随机推荐
- 二、kubernetes
一.kubernetes(简称k8s) 集群示意图 Kubernetes工作模式server-client,Kubenetes Master提供集中化管理Minions.部署1台Kubernetes ...
- thinkphp视图中插入php代码
性别: <?php if($item['sex'] == 1):?> 男 <?php else:?> 女 <?php endif;?> 错误:<?php ec ...
- Js 常用字符串操作 API
常用的一些字符串操作 API 整理 1.str.charAt(index).str.charCodeAt(index) - 返回指定位置的字符 / 字符编码(0~65535) index - 必须,表 ...
- zookeeper客户端操作
ZooKeeper客户端 zkCli.sh 节点的增删改查 在 bin 目录下的 zkCli.sh 就是ZooKeeper客户端 ./zkCli.sh -timeout 5000 -server ...
- 10.Service资源发现
Kubernetes Pods是不可控的.每当一个pod停止后,他不是重启,而是重建.ReplicaSets特别是Pods动态地创建和销毁(例如,当向外扩展或向内扩展时).虽然每个PodIP地址都有自 ...
- C 语言----- 指针
指针是一个值为内存地址的变量, 指针的核心是它是一个变量, 只不过它是用来存放内存地址的, 所以在了解指针之前,先说一下什么是变量.变量就是在内存中开辟的一个空间.如int year, 就是在内存中开 ...
- codeforces263B
Squares CodeForces - 263B Vasya has found a piece of paper with a coordinate system written on it. T ...
- poj2112(网络流-最大流+二分)
题意:给你k个挤奶器,c头牛,每个挤奶器能放m头牛,问你奶牛需要走的最大距离最小是多少: 解题思路:因为最大距离最小,也就是求最小的距离满足所有牛都能到,所以我们先用floyd跑最短路,把所有点之间的 ...
- Qt5 入门
main()函数中第一句是创建一个QApplication类的实例. 对于 Qt 程序来说,main()函数一般以创建 application 对象(GUI 程序是QApplication,非 GUI ...
- MySQL中表复制:create table like 与 create table as select
CREATE TABLE A LIKE B 此种方式在将表B复制到A时候会将表B完整的字段结构和索引复制到表A中来. CREATE TABLE A AS SELECT x,x,x,xx FROM B ...