当前位置: 首页 > news >正文

建筑网站绿地新里城/b2b平台运营模式

建筑网站绿地新里城,b2b平台运营模式,高端的网站设计公司,网站制作理念第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需要导入模块:from scrapy.selector import HtmlXPat…

第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

 

标签选择器对象

HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象
需要导入模块:from scrapy.selector import HtmlXPathSelector

select()标签选择器方法,是HtmlXPathSelector里的一个方法,参数接收选择器规则,返回列表元素是一个标签对象

extract()获取到选择器过滤后的内容,返回列表元素是内容

选择器规则

  //x 表示向下查找n层指定标签,如://div 表示查找所有div标签
  /x 表示向下查找一层指定的标签
  /@x 表示查找指定属性,可以连缀如:@id @src
  [@class="class名称"] 表示查找指定属性等于指定值的标签,可以连缀 ,查找class名称等于指定名称的标签
  /text() 获取标签文本类容
  [x] 通过索引获取集合里的指定一个元素

 

获取指定的标签对象

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from urllib import request                     #导入request模块
import osclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):hxs = HtmlXPathSelector(response)               #创建HtmlXPathSelector对象,将页面返回对象传进去
items = hxs.select('//div[@class="showlist"]/li')  #标签选择器,表示获取所有class等于showlist的div,下面的li标签print(items)                                       #返回标签对象

 

循环获取到每个li标签里的子标签,以及各种属性或者文本

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from urllib import request                     #导入request模块
import osclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):hxs = HtmlXPathSelector(response)               #创建HtmlXPathSelector对象,将页面返回对象传进去
items = hxs.select('//div[@class="showlist"]/li')  #标签选择器,表示获取所有class等于showlist的div,下面的li标签# print(items)                                     #返回标签对象for i in range(len(items)):                        #根据li标签的长度循环次数title = hxs.select('//div[@class="showlist"]/li[%d]//img/@alt' % i).extract()   #根据循环的次数作为下标获取到当前li标签,下的img标签的alt属性内容src = hxs.select('//div[@class="showlist"]/li[%d]//img/@src' % i).extract()     #根据循环的次数作为下标获取到当前li标签,下的img标签的src属性内容if title and src:print(title,src)  #返回类容列表

 

将获取到的图片下载到本地

urlretrieve()将文件保存到本地,参数1要保存文件的src,参数2保存路径
urlretrieve是urllib下request模块的一个方法,需要导入from urllib import request

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from urllib import request                     #导入request模块
import osclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):hxs = HtmlXPathSelector(response)               #创建HtmlXPathSelector对象,将页面返回对象传进去
items = hxs.select('//div[@class="showlist"]/li')  #标签选择器,表示获取所有class等于showlist的div,下面的li标签# print(items)                                     #返回标签对象for i in range(len(items)):                        #根据li标签的长度循环次数title = hxs.select('//div[@class="showlist"]/li[%d]//img/@alt' % i).extract()   #根据循环的次数作为下标获取到当前li标签,下的img标签的alt属性内容src = hxs.select('//div[@class="showlist"]/li[%d]//img/@src' % i).extract()     #根据循环的次数作为下标获取到当前li标签,下的img标签的src属性内容if title and src:# print(title[0],src[0])                                                    #通过下标获取到字符串内容file_path = os.path.join(os.getcwd() + '/img/', title[0] + '.jpg')          #拼接图片保存路径request.urlretrieve(src[0], file_path)                          #将图片保存到本地,参数1获取到的src,参数2保存路径

 

 

xpath()标签选择器,是Selector类里的一个方法,参数是选择规则【推荐】

选择器规则同上

selector()创建选择器类,需要接受html对象
需要导入:from scrapy.selector import Selector

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from scrapy.selector import Selectorclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):items = Selector(response=response).xpath('//div[@class="showlist"]/li').extract()# print(items)                                     #返回标签对象for i in range(len(items)):title = Selector(response=response).xpath('//div[@class="showlist"]/li[%d]//img/@alt' % i).extract()src = Selector(response=response).xpath('//div[@class="showlist"]/li[%d]//img/@src' % i).extract()print(title,src)

 

 

正则表达式的应用

正则表达式是弥补,选择器规则无法满足过滤情况时使用的,

分为两种正则使用方式

  1、将选择器规则过滤出来的结果进行正则匹配

  2、在选择器规则里应用正则进行过滤

1、将选择器规则过滤出来的结果进行正则匹配,用正则取最终内容

最后.re('正则')

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from scrapy.selector import Selectorclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):items = Selector(response=response).xpath('//div[@class="showlist"]/li//img')[0].extract()print(items)                                     #返回标签对象items2 = Selector(response=response).xpath('//div[@class="showlist"]/li//img')[0].re('alt="(\w+)')print(items2)# <img src="http://www.shaimn.com/uploads/170724/1-1FH4221056141.jpg" alt="人体艺术mmSunny前凸后翘性感诱惑写真">
# ['人体艺术mmSunny前凸后翘性感诱惑写真']

2、在选择器规则里应用正则进行过滤

[re:正则规则]

# -*- coding: utf-8 -*-
import scrapy       #导入爬虫模块
from scrapy.selector import HtmlXPathSelector  #导入HtmlXPathSelector模块
from scrapy.selector import Selectorclass AdcSpider(scrapy.Spider):name = 'adc'                                        #设置爬虫名称allowed_domains = ['www.shaimn.com']start_urls = ['http://www.shaimn.com/xinggan/']def parse(self, response):items = Selector(response=response).xpath('//div').extract()# print(items)                                     #返回标签对象items2 = Selector(response=response).xpath('//div[re:test(@class, "showlist")]').extract()  #正则找到div的class等于showlist的元素print(items2)

 

http://www.lbrq.cn/news/1476973.html

相关文章:

  • 设计做兼职的网站求推荐/营销推广公司
  • 兰州拼团网站建设/实训百度搜索引擎的总结
  • 专门做ppt的网站斧头/制作一个网站的流程有哪些
  • python 网站开发 sae/河南网站推广
  • 机械公司网站建设/百度推广没有效果怎么办
  • html展示网站源代码/百度一下百度首页官网
  • 企业网站的基本功能有哪些/网络营销前景和现状分析
  • 做淘宝网站用什么软件做/百度站长平台网站提交
  • 企业网站域名注册查询/it培训班大概需要多少钱
  • 如何建设公司门户网站/seo标题生成器
  • 政务系统网站建设/天津seo技术教程
  • 做网站去哪个公司/网站建站价格
  • 个人网站不能做淘宝客/5118网站查询
  • 潍坊企业自助建站系统/百度app安装下载免费
  • 效果图网站有哪些好的/衡阳seo服务
  • 网站模板 阿里/技术教程优化搜索引擎整站
  • 向网站上传文件怎么做/网站案例分析
  • 网站域名变更/互联网登录的网站名
  • 上海在线网站/游戏推广接单平台
  • 临沂市建设工程监理公司网站/电商运营转行后悔了
  • 呼和浩特建站/沈阳网站关键词排名
  • 潮州市建设局官方网站/网站有哪些平台
  • 网站建设 荆州/seo霸屏软件
  • 怎么把园林设计网站做的酷炫/推广引流方法与渠道
  • 网站建设应遵循的原则/外贸网站优化
  • 那个网站做二手设备比较好/友链网
  • 陕西省交通建设集团西长分公司网站/sem是什么品牌
  • 宣传网站建设方案模板下载/网络营销策划案
  • 如何把自己做的网站放到微信上/品牌推广方案范文
  • 大型营销型网站制作/网络营销的作用
  • Java高性能编程实践指南
  • 2025年Python Web框架之争:Django、Flask还是FastAPI,谁将主宰未来?
  • FFmpegHandler 功能解析,C语言程序化设计与C++面向对象设计的核心差异
  • node.js之Koa框架
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • JAVAEE--4.多线程案例