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

python多页网站目录_2:url有规律的多页面爬取

举例网站:http://www.luoo.net/music/期刊号

e.g:http://www.luoo.net/music/760

802718-20151025125429239-77998895.jpg

打算爬取其title:Hello World;pic;desc:本期音乐为......《8-bit Love》。

步骤:

1):建立项目

在shell中你对应的目录下:scrapy startproject luoo

在pycharm中打开luoo文件夹

2):编写items.py

1 importscrapy2 classLuooItem(scrapy.Item):3 url =scrapy.Field()4 title =scrapy.Field()5 pic =scrapy.Field()6 desc = scrapy.Field()

3):编写spider

在spiders文件夹下建立luoospider.py

1 importscrapy2 from luoo.items importLuooItem3

4 classLuooSpider(scrapy.Spider):5 name = "luoo"

6 allowed_domains = ["luoo.net"]7 start_urls =[]8 for i in range(750,763):9 url = 'http://www.luoo.net/music/%s'%(str(i))10 start_urls.append(url)11

12 defparse(self, response):13 item =LuooItem()14 item['url'] =response.url15 item['title'] = response.xpath('//span[@class="vol-title"]/text()').extract()16 item['pic'] = response.xpath('//img[@class="vol-cover"]/@src').extract()17 item['desc'] = response.xpath('//div[@class="vol-desc"]/text()').extract()18 return item

4)pipelines.py不动

5)在command中进入luoo目录

scrapy list 列出可用的爬虫(luoo)

scrapy crawl luoo -o result.csv(执行爬虫并且以result.csv保存到当前目录下)

6)用notepad++打开result.py并且更改格式为ANSI后保存,再用excel打开就不会有乱码了

*遗留to do:

1)数据考虑后期迁移到mysql数据库

2)单独把图片保存到图片格式的文件夹中

memory:顺便附上两个月前用urllib库实现的此功能代码(python3.4)

现在看看用scrapy真的是方便太多了,更别提其牛逼呼呼的可扩展性:

1 importurllib.request2 importre3 importtime4

5 defopenurl(urls):6 htmls=[]7 for url inurls:8 req=urllib.request.Request(url)9 req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36')10 #Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0

11 response =urllib.request.urlopen(url)12 htmls.append(response.read())13 time.sleep(5)14 returnhtmls15

16 defjiexi(htmls):17 pics=[]18 titles=[]19 contents=[]20 for html inhtmls:21 html = html.decode('utf-8')22 pics.append(re.findall('

.*?(.*?)',html,re.S))24 contents.append(re.findall('.*?(.*?)
',html,re.S))25

26 i =len(titles)27 with open('C:\\Users\\Administrator\\Desktop\\test.txt', 'w') as f:28 for x inrange(i):29 print("正在下载期刊:%d" %(746-x))30 f.write("期刊名:"+str(titles[x])[2:-2]+"\n")31 f.write("图片链接:"+str(pics[x])[2:-2]+".jpg\n")32 content = str(contents[x])[4:-2]33 content.strip()34 print(content.count("""
\n"""))35 content.replace("""
\n""","#")36 f.write("配诗:"+content+"\n\n\n")37

38

39 yur='http://www.luoo.net/music/'

40 urls =[]41 for i in range(657,659):42 urls.append(yur +str(i))43

44 htmls =openurl(urls)45 pics = jiexi(htmls)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 淡水河边的夕阳-台北印象
  • python常问问题_python常见问题
  • Cisco路由器安全配置方案
  • crc32算法_业务开发中你用到了哪些算法?
  • ORA-00600 关联规则建模错误
  • python基于值得内存_浅谈Python 对象内存占用
  • 我的最大收获
  • 电力装置的继电保护和自动装置设计规范_电力工程的继电保护和安全自动装置设计原则(注电多选373)...
  • 好差的英语
  • 订阅发布延时_网关实现灰度发布
  • 本地引入bootstrap_如何引入 Spring Cloud AliCloud ACM
  • Windows XP 中提供的快捷键列表[比较全]
  • python is beautiful_Python学习之beautifulsoup4库的使用
  • Sysinternals Suite 工具下载
  • python朋友圈广告怎么这么火_利用Python让你的微信朋友圈与众不同,更加高大上...
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Kibana配置logstash,报表一体化
  • rc-form之最单纯情况
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SQLServer之创建数据库快照
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 测试如何在敏捷团队中工作?
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 将回调地狱按在地上摩擦的Promise
  • 前端面试之CSS3新特性
  • 入口文件开始,分析Vue源码实现
  • 软件开发学习的5大技巧,你知道吗?
  • 使用docker-compose进行多节点部署
  • ionic入门之数据绑定显示-1
  • ​520就是要宠粉,你的心头书我买单
  • ​低代码平台的核心价值与优势
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #QT(一种朴素的计算器实现方法)
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (SERIES10)DM逻辑备份还原
  • (ZT)出版业改革:该死的死,该生的生
  • (分布式缓存)Redis哨兵
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (全注解开发)学习Spring-MVC的第三天
  • (十一)图像的罗伯特梯度锐化
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (循环依赖问题)学习spring的第九天
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Google的Objective-C编码规范
  • . NET自动找可写目录
  • .net core 6 redis操作类
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法