scrapy爬虫学习
2017-10-27 16:42
197 查看
urllib模块解析编码url参数 from urllib import parse postdata = { 'a': 1, 'b': 2 } data = parse.urlencode(postdata) print(data) windows下爬虫脚本必须配置以下内容,否则出现编码错误 import sys,io sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') 一、爬取煎蛋网内容 items.py #数据字段 import scrapy class JiandanItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() content = scrapy.Field() img_url = scrapy.Field() 爬虫脚本jiandan.py import sys,io sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') import scrapy from ..items import JiandanItem from scrapy.selector import HtmlXPathSelector class JianDanSpider(scrapy.Spider): name = "jiandan" allowed_domains = ["jandan.net"] start_urls = [ "http://jandan.net/", ] def parse(self, response): #title_list = response.xpath('//div[@class="indexs"]//h2/a/text()').extract() hxs = HtmlXPathSelector(response) items = hxs.select('//div[@class="post f list-post"]') for item in items: img_url = item.select('.//div[@class="thumbs_b"]/a/img/@data-original').extract_first() if not img_url: img_url = item.select('.//div[@class="thumbs_b"]/a/img/@src').extract_first() img_url = img_url.strip("/") img_url = "http://"+img_url title = item.select('.//div[@class="indexs"]/h2/a/text()').extract_first() content = item.select('.//div[@class="indexs"]/text()').extract()[3] content = content.strip() obj = JiandanItem(title=title, img_url=img_url, content=content) yield obj pipelines.py#数据存储脚本 import json import os import requests # class JiandanPipeline(object): # def process_item(self, item, spider): # return item class JsonPipeline(object): #items.py设置的字段存储方式 def __init__(self): self.file = open('jiandan.txt', 'w') def process_item(self, item, spider): v = json.dumps(dict(item), ensure_ascii=False) self.file.write(v) self.file.write('\n') self.file.flush() return item class FilePipeline(object): #图片url存储方式 def __init__(self): if not os.path.exists('imgs'): os.makedirs('imgs') def process_item(self, item, spider): response = requests.get(item['img_url'],stream=True) with open('1.jpg', mode='wb') as f: f.write(response.content) return item settings.py#设置存储 ITEM_PIPELINES = { 'jiandan.pipelines.JsonPipeline': 100, 'jiandan.pipelines.FilePipeline': 300, } 命令行输出json文件: scrapy crawl jiandan -o items.json
相关文章推荐
- 爬虫学习之Scrapy构建
- 爬虫技术 -- 进阶学习(十)网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)
- Python爬虫框架Scrapy 学习笔记 10.1 -------【实战】 抓取天猫某网店所有宝贝详情
- 爬虫学习之基于Scrapy的爬虫自动登录
- 爬虫框架--Scrapy学习笔记一
- Python 爬虫学习 —— Scrapy 入门知识学习
- 爬虫scrapy学习
- Python爬虫框架Scrapy 学习笔记 10.2 -------【实战】 抓取天猫某网店所有宝贝详情
- Python爬虫学习(七)----Scrapy框架实践
- python 爬虫 学习笔记(一)Scrapy框架入门
- 爬虫 scrapy 框架学习 2. Scrapy框架业务逻辑的理解 + 爬虫案例 下载指定网站所有图片
- 爬虫Scrapy框架之学习使用(三):信号(Signals)
- Scrapy爬虫框架学习之使用start_requests函数实现用户登录
- 爬虫学习(三) Scrapy框架入门与豆瓣电影爬虫
- 【Python学习系列五】Python网络爬虫框架Scrapy环境搭建
- [置顶] Scrapy学习系列之天眼查爬虫实践
- 爬虫学习之基于Scrapy的网络爬虫
- 爬虫Scrapy框架之学习使用(二):DownloaderMiddleWares
- Python_爬虫学习_2_Scrapy常用工具命令
- scrapy爬虫学习系列五:图片的抓取和下载