Scrapy框架爬取详细步骤
来源:互联网 发布:java有多少种数据类型 编辑:程序博客网 时间:2024/06/06 00:15
Scrapy框架
(本文只做学习使用,请勿他用)
1.需求工具 pycharm 小说网的域名 (www.qisuu.com)
第一步—–创建文件
创建成功后显示如图:
第二步——将创建在桌面上的scrapy文件用pycharm打开:
这是创建成功后在pycharm中的显示
pycharm左下角打开 Terminal
打开后如图 我第一次键入了一条命令 提示爬虫名字不能和项目名称一样,更改后再运行..成功建立爬虫文件 booksspider
创建爬虫文件命令: scrapy+ genspider+ 蜘蛛名称 +网站域名
创建成功后,出现爬虫文件:
接下来,就可以在爬虫文件中写爬虫代码了
第三步——–编写爬虫代码
1.红框框起来的头部 有一个是自带的,我提前 引用了几个 接下来我需要用到的 功能模块在这里就不再详细解释模块功能,下文用到后再解释.
2.椭圆里面的内容 填写你爬取开始的页面URL,这里是自动生成的,一般是不正确的,需要自己打开要爬取的初始页,将URL复制到这里.
3.代码思路
1)请求导航条上的每个按钮对应的页面
2)分别解析每个页面的电子书列表(主要获得电子书的详情url)
3)请求详情url,解析电子书的详细信息(书名,封面,评分,大小…下载地址)
4)根据下载地址下载电子书到本地
获取导航栏文字及链接
def parse(self, response): a_list = response.xpath("//div[@class='nav']/a[@target='_blank']") for a in a_list: # 分类名称 category_name = a.xpath("text()").extract_first("") # 拼接完整的分类url category_url = urlparse.urljoin(response.url, a.xpath("@href").extract_first("")) # 将分类地址转发给downloader下载并将结果传给parse_books_list # meta:专门用来传递参数,类型是字典 yield scrapy.Request( url=category_url, callback=self.parse_books_list, meta={"category_name": category_name, } )
获取每本书链接
def parse_books_list(self, response): href_list = response.xpath("//div[@class='listBox']/ul/li/a/@href").extract() for href in href_list: list_href = urlparse.urljoin(response.url, href) yield scrapy.Request( url=list_href, callback=self.parse_books_detail, meta=response.meta, # meta={"category_name": response.meta['category_name'],} ) all_pages = response.xpath("//select[@name='select']/option/@value").extract() for page in all_pages: detail_url = urlparse.urljoin(response.url, page) yield scrapy.Request( url=detail_url, callback=self.parse_books_list, meta=response.meta )
进入书本详细页 获取书本详细信息及 下载链接 封面链接
def parse_books_detail(self, response): info_div = response.xpath("//div[@class='detail_right']") title = info_div.xpath("h1/text()").extract_first("") li_list = info_div.xpath("ul/li") size = li_list[2].xpath("text()").extract_first("") size = size.replace(u"文件大小:", "").strip() date_time = li_list[4].xpath("text()").extract_first("") date_time = date_time.replace(u"发布日期:", "").strip() user = li_list[6].xpath("a/text()").extract_first("") download_times = li_list[1].xpath("text()").extract_first("") download_times = download_times.replace(u"下载次数:", "").strip() book_degree = li_list[7].xpath("em/@class").extract_first("") book_degree = book_degree.replace("lstar", "").strip() download_url = response.xpath("//a[@class='downButton']/@href")[1].extract() img_url = response.xpath("//div[@class='detail_pic']/img/@src").extract_first("") img_url = urlparse.urljoin(response.url, img_url) category_name = response.meta['category_name'] print title, user, date_time, category_name item = BooksItem() item['title'] = title item['size'] = size item['date_time'] = date_time item['user'] = user item['download_times'] = download_times item['book_degree'] = book_degree # 小说要以GBK格式进行存储 ######################## item['download_url'] = [u"%s" % download_url] item['img_url'] = [img_url] ########################注意以列表方式存储 item['category_name'] = category_name yield item
第四步——设置item /与存储有关
将需要存储的信息写入,如图所示:
第五步——配置settings /与下载有关
打开settings,找到红方框中代码,原本是被注释掉的,将 ITEM_PIPELINES{} 解注释.原本就有的内容注释掉,另外添加两条与下载图片与文本的代码. 最后,在ITEM_PIPELINES{}下面键入四行代码,分别为图片和文本的下载链接与存储路径
第六步——在Terminal中输入运行命令
scrapy+crawl+爬虫名称
运行后就会出现这个啦,图片和文字全部存入这两个文件夹中
以上内容为 比较粗糙,因为本人也不太熟,仅做参考.懒癌犯了~ 以后完善
阅读全文
0 0
- Scrapy框架爬取详细步骤
- Scrapy 爬虫框架爬取网页数据
- scrapy框架爬虫定时爬取
- scrapy框架爬取校花网站
- scrapy框架爬取51job网
- 【scrapy】爬取框架使用流程(1)
- python scrapy框架爬取CNKI数据
- Windows安装scrapy框架步骤
- 用scrapy框架爬取js交互式表格数据
- Python 采用Scrapy爬虫框架爬取豆瓣电影top250
- 爬虫框架scrapy,爬取豆瓣电影top250
- scrapy框架爬取校花网站的升级版
- Python爬虫框架Scrapy:爬取校花网
- Python爬虫:用Scrapy框架爬取漫画
- 使用scrapy框架爬取豆瓣电影top250信息
- 用scrapy框架爬取豆瓣Top250电影
- scrapy框架爬取百度贴吧图片
- Scrapy框架爬取腾讯招聘所有职位
- [简单逻辑学]学习逻辑学的思想准备——观念与其对象
- MySql
- MySQL的事务初探
- 啥是Storm
- java 后台解析前台传json串双引号转义问题
- Scrapy框架爬取详细步骤
- 内存管理艺术3(基于C语言)
- python统计学习相关琐碎知识点
- Dividing (多重背包 动态规划)
- 7. Reverse Integer
- Junk-Mail Filter-删点
- python基本语法_输入输出详解
- zstack 串口解读,几家之言汇总。(1)
- 饭卡||HDU2546