Scrapy中对xpath使用re

Scrapy中使用xpath时,根据xpath的语法不一定能得到想要的。

如下面的html源码:

1 <div class="db_contout">    <div class="db_cont">                <div class="details_nav">            <a href="http://movie.mtime.com/79055/addimage.html" class="db_addpic" target="_blank">                <strong class="px16">+</strong> 添加图片</a>            <ul id="imageNavUl">                <li><i>&nbsp;</i><a href="http://movie.mtime.com/79055/posters_and_images/">全部图片</a></li>                <li><i>&nbsp;</i><a href="#">剧照</a></li>                <li><i>&nbsp;</i><a href="#">海报</a></li>                <li><i>&nbsp;</i><a href="#">工作照</a></li>                <li><i>&nbsp;</i><a href="#">新闻图片</a></li>                <li><i>&nbsp;</i><a href="#">桌面</a></li>                <li><i>&nbsp;</i><a href="#">封套</a></li>            </ul>        </div>        <div class="db_pictypeout">            <div class="pictypenav clearfix">                                <ul id="imageSubNavUl" class="fl mt3">                </ul>                                <div id="filters" class="db_selbox fr">                </div>            </div>                        <dl id="imagesDiv" class="db_pictypelist clearfix">            </dl>                        <div id="pageDiv">            </div>        </div>    </div></div><div id="M13_B_DB_Movie_FooterTopTG"></div><script type="text/javascript">
2     var imageList = [{"stagepicture":[{"officialstageimage":[{"id":1059362,"title":"官方剧照 #16","type":6,"subType":6001,"status":1,"img_220":"http://img31.mtime.cn/pi/2014/02/28/042610.59909056_220X220.jpg","img_1000":"http://img31.mtime.cn/pi/2014/02/28/042610.59909056_1000X1000.jpg","width":3233,"height":2000,"fileSize":5472,"enterTime":"2009-07-09","enterNickName":"jackali","description":"","commentCount":0,"imgDetailUrl":"http://movie.mtime.com/79055/posters_and_images/1059362/","topNum":4,"newIndex":37,"typeHotIndex":0,"typeNewIndex":37,"img_235":"http://img31.mtime.cn/pi/2014/02/28/042610.59909056_235X235.jpg"},{"id":829271,"title":"官方剧照 #06","type":6,"subType":6001,"status":1,"img_220":"http://img31.mtime.cn/pi/2014/02/28/042556.29233713_220X220.jpg","img_1000":"http://img31.mtime.cn/pi/2014/02/28/042556.29233713_1000X1000.jpg","width":842,"height":477,"fileSize":74,"enterTime":"2008-12-17","enterNickName":"边界","description":"","commentCount":0,"imgDetailUrl":"http://movie.mtime.com/79055/posters_and_images/829271/","topNum":0,"newIndex":51,"typeHotIndex":1,"typeNewIndex":51,"img_235":"http://img31.mtime.cn/pi/2014/02/28/042556.29233713_235X235.jpg"},{"id":625583,"title":"官方剧照 

要得到img_1000后面picture的source路径,通过xpath的语法我没有得到直接取到的方法,折中办法参考:http://www.cnblogs.com/Garvey/p/6697162.html,使用re来获得需要的内容。

 1 class MtimeSpider(scrapy.Spider):
 2     name = "mtime"
 3     allowed_domains = ["http://www.mtime.com"]
 4     start_urls = (
 5         ‘http://movie.mtime.com/79055/posters_and_images/posters/hot.html‘,
 6     )
 7
 8     def parse(self, response):
 9         allpics = response.xpath("//script[@type=‘text/javascript‘]").re(‘\"img_1000\":\"(.+?jpg)\"‘)
10         print len(allpics)
11         nameList = []
12         i = 0
13         for pic in allpics:
14             i = i+1
15             item = S0819MtimeTiantangItem()
16             while True:
17                 itemName = random.randint(0, 1000)*3
18                 itemName = str(itemName)
19                 if itemName in nameList:
20                     pass
21                 else:
22                     name = str(i)
23                     nameList.append(itemName)
24                     #print "-----"+itemName
25                     print "-----"
26                     #print nameList
27                     break
28             addr = pic
29             item[‘name‘] = name
30             item[‘addr‘] = addr
31             print "+++++"+addr
32             print "+++++"+name
33             yield item
时间: 2024-10-11 16:37:18

Scrapy中对xpath使用re的相关文章

[ 转 ] scrapy 中解决 xpath 中的中文编码问题

1.问题描述: 实现定位<h2>品牌</h2>节点 brand_tag = sel.xpath("//h2[text()= '品牌']") 报错:ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters 2.解决方法: (1)brand = u'品牌'           brand_tag = sel.xpath(&

scrapy中的xpath用法和css的用法

css 不包含那个类 response.css(".list-left dd:not(.page)") 获取属性和文本 img.css("a::text").extract_first() img.css("a::attr(href)").extract_first() 获取类page-en倒数第二个节点 response.css(".page-en:nth-last-child(2)::attr(href)").extrac

在Scrapy中如何利用Xpath选择器从HTML中提取目标信息(两种方式)

前一阵子我们介绍了如何启动Scrapy项目以及关于Scrapy爬虫的一些小技巧介绍,没来得及上车的小伙伴可以戳这些文章: 手把手教你如何新建scrapy爬虫框架的第一个项目(上) 手把手教你如何新建scrapy爬虫框架的第一个项目(下) 关于Scrapy爬虫项目运行和调试的小技巧(上篇) 关于Scrapy爬虫项目运行和调试的小技巧(下篇) 今天我们将介绍在Scrapy中如何利用Xpath选择器从HTML中提取目标信息.在Scrapy中,其提供了两种数据提取的方式,一种是Xpath选择器,一种是C

抓取scrapy中文文档 第一个Scrapy项目实现

使用Scrapy这个python的网络爬虫框架抓取Scrapy中文文档 开发第一步:新建项目scrapy startproject myfirst 目录结构: myfirst │ scrapy.cfg Scrapy项目配置文件 │ └─myfirst Scrapy项目代码存放目录 │ items.py 存储从抓取的网页中需要保存的数据,再其中指定要存储的域 │ pipelines.py 管道文件,用于存储从抓取的网页中解析出的其他页面的url,相当于任务队列 │ settings.py 爬虫配置

scrapy中对于item的把控

其实很简单,就是想要存储的位置发生改变.直接看例子,然后触类旁通. 以大众点评 评论的内容为例 ,位置:http://www.dianping.com/shop/77489519/review_more?pageno=1 数据存储形式由A 变成B A: 展开的话这样子: B: 本质上看,就是多个相同类型的item可以合并,不需要那么多,分别来看下各自的代码: A: class GengduopinglunSpider(scrapy.Spider): name = 'gengduopinglun'

论Scrapy中的数据持久化

引入 Scrapy的数据持久化,主要包括存储到数据库.文件以及内置数据存储. 那我们今天就来讲讲如何把Scrapy中的数据存储到数据库和文件当中. 终端指令存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作. # 执行输出指定格式进行存储:将爬取到的数据写入不同格式的文件中进行存储 scrapy crawl 爬虫名称 -o xxx.json # 存为json文件 scrapy crawl 爬虫名称 -

scrapy中的selenium

引入 在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现,通过浏览器进行url请求发送则会加载出对应的动态加载出的数据.那么如果我们想要在scrapy也获取动态加载出的数据,则必须使用selenium创建浏览器对象,然后通过该浏览器对象进行请求发送,获取动态加载的数据值. 1.案例分析: - 需求:爬取网易新闻的国内板块下的新闻数据 - 需求分析:当点击

10 UA池和代理池在Scrapy中的应用

下载中间件简介 在Scrapy中,引擎和下载器之间有一个组件,叫下载中间件(Downloader Middlewares).因它是介于Scrapy的request/response处理的钩子,所以有2方面作用: (1)引擎将请求传递给下载器过程中,下载中间件可以对Requests进行一系列处理.比如设置请求的 User-Agent,设置代理ip等 (2)在下载器完成将Response传递给引擎中,下载中间件可以对Responses进行一系列处理.比如进行gzip解压等. 爬虫中,主要使用下载中间

爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 2. 中间件的使用 3. selenium在scrapy中的应用 4. CrawlSpider 5. 分布式 5. 增量式 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 爬取流程: 爬虫类中将解析到的图片