2:url有规律的多页面爬取
举例网站:http://www.luoo.net/music/期刊号
e.g:http://www.luoo.net/music/760

打算爬取其title:Hello World;pic;desc:本期音乐为......《8-bit Love》。
步骤:
1):建立项目
在shell中你对应的目录下:scrapy startproject luoo
在pycharm中打开luoo文件夹
2):编写items.py
import scrapy
class LuooItem(scrapy.Item):
url = scrapy.Field()
title = scrapy.Field()
pic = scrapy.Field()
desc = scrapy.Field()
3):编写spider
在spiders文件夹下建立luoospider.py
import scrapy
from luoo.items import LuooItem class LuooSpider(scrapy.Spider):
name = "luoo"
allowed_domains = ["luoo.net"]
start_urls = []
for i in range(750,763):
url = 'http://www.luoo.net/music/%s'%(str(i))
start_urls.append(url) def parse(self, response):
item = LuooItem()
item['url'] = response.url
item['title'] = response.xpath('//span[@class="vol-title"]/text()').extract()
item['pic'] = response.xpath('//img[@class="vol-cover"]/@src').extract()
item['desc'] = response.xpath('//div[@class="vol-desc"]/text()').extract()
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真的是方便太多了,更别提其牛逼呼呼的可扩展性:
import urllib.request
import re
import time def openurl(urls):
htmls=[]
for url in urls:
req=urllib.request.Request(url)
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')
# Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
response = urllib.request.urlopen(url)
htmls.append(response.read())
time.sleep(5)
return htmls def jiexi(htmls):
pics=[]
titles=[]
contents=[]
for html in htmls:
html = html.decode('utf-8')
pics.append(re.findall('<div class="player-wrapper".*?>.*?<img.*?src="(.*?).jp.*?".*?alt=".*"',html,re.S))
titles.append(re.findall('class="vol-title">(.*?)</span>',html,re.S))
contents.append(re.findall('<div.*?class="vol-desc">.*?(.*?)</div>',html,re.S)) i = len(titles)
with open('C:\\Users\\Administrator\\Desktop\\test.txt', 'w') as f:
for x in range(i):
print("正在下载期刊:%d" %(746-x))
f.write("期刊名:"+str(titles[x])[2:-2]+"\n")
f.write("图片链接:"+str(pics[x])[2:-2]+".jpg\n")
content = str(contents[x])[4:-2]
content.strip()
print(content.count("""<br>\n"""))
content.replace("""<br>\n""","#")
f.write("配诗:"+content+"\n\n\n") yur='http://www.luoo.net/music/'
urls = []
for i in range(657,659):
urls.append(yur + str(i)) htmls = openurl(urls)
pics = jiexi(htmls)
2:url有规律的多页面爬取的更多相关文章
- python3编写网络爬虫14-动态渲染页面爬取
一.动态渲染页面爬取 上节课我们了解了Ajax分析和抓取方式,这其实也是JavaScript动态渲染页面的一种情形,通过直接分析Ajax,借助requests和urllib实现数据爬取 但是javaS ...
- 【图文详解】scrapy爬虫与动态页面——爬取拉勾网职位信息(2)
上次挖了一个坑,今天终于填上了,还记得之前我们做的拉勾爬虫吗?那时我们实现了一页的爬取,今天让我们再接再厉,实现多页爬取,顺便实现职位和公司的关键词搜索功能. 之前的内容就不再介绍了,不熟悉的请一定要 ...
- 爬虫系列5:scrapy动态页面爬取的另一种思路
前面有篇文章给出了爬取动态页面的一种思路,即应用Selenium+Firefox(参考<scrapy动态页面爬取>).但是selenium需要运行本地浏览器,比较耗时,不太适合大规模网页抓 ...
- 爬虫系列4:scrapy技术进阶之多页面爬取
多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...
- Python Requests库入门——应用实例-京东商品页面爬取+模拟浏览器爬取信息
京东商品页面爬取 选择了一款荣耀手机的页面(给华为打广告了,荣耀play真心不错) import requests url = "https://item.jd.com/7479912.ht ...
- scrapy之盗墓笔记三级页面爬取
#今日目标 **scrapy之盗墓笔记三级页面爬取** 今天要爬取的是盗墓笔记小说,由分析该小说的主要内容在三级页面里,故需要我们 一一解析 *代码实现* daomu.py ``` import sc ...
- python爬爬爬之单网页html页面爬取
python爬爬爬之单网页html页面爬取 作者:vpoet mail:vpoet_sir@163.com 注:随意copy 不用告诉我 #coding:utf-8 import urllib2 Re ...
- 使用requests简单的页面爬取
首先安装requests库和准备User Agent 安装requests直接使用pip安装即可 pip install requests 准备User Agent,直接在百度搜索"UA查询 ...
- 3:url无规律的多页面爬取
试例网站:豆瓣电影TOP250:http://movie.douban.com/top250 关键点:在审查元素下查看后页即可以看到跳转的url.而且最后一页就此属性就没有了. 由于关键是实现分页,所 ...
随机推荐
- linux 防火墙--firewalld学习
firewalld是centos7默认的防火墙,相比于iptables重要的优势: 1 支持动态更新: 2 不用重启服务: 同时增加了防火墙的“zone”概念,具体差异没做过多了解,这篇文章只记录fi ...
- 常用CSS代码片断
单行文本截字 .nowrap { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; word-break: normal; ...
- 常用的JavaScript正则匹配规则代码收藏,很实用
收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出 ...
- 文成小盆友python-num11-(2) python操作Memcache Redis
本部分主要内容: python操作memcache python操作redis 一.python 操作 memcache memcache是一套分布式的高速缓存系统,由LiveJournal的Brad ...
- keep out layer PK board shape
在进行设计pcb时,注意:板边线只能用PLACE LINE画线条,不能画具有电气性能的导线关于边界设置有三种,一.在 keepout layer 定义电气边界.二.design->board s ...
- Windows开发中一些常用的辅助工具
经常有人问如何快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具. (1) Spy++ 相信windows开发中应该没人不知道这个工具, 我们常用 ...
- 在ubuntu上编译chrome
在ubuntu上编译chrome 在ubuntu上编译chrome 红心地瓜 1.获取代码 1)下载tarball,http://chromium-browser-source.commondatas ...
- 精美实用的jQuery插件精选
jQuery的确是一款相当强大的Javascript框架,同时jQuery的插件就多入牛毛,如果你善于收集,那么你在写前端页面的时候肯定会更加方便.本文精选了一些精美实用的jQuery插件供大家参考. ...
- socket中select的使用源码
下面的代码来自IBM学习网站,是学习socket通信和select使用的一个很好的源码. server.c 服务器端 #include <stdio.h> #include <st ...
- <有序数组>转化为<按二分法遍历顺序排列的数组>(C++实现)
在进行参数试错时,通常将可能的参数由小到大排列一个个进行测试,这样的测试顺序很多时候不太合理,因此写了一个按二分法遍历顺序排列的算法,通常能更快的找到合适的参数.代码如下: /************ ...