博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scrapy爬取IT之家
阅读量:5901 次
发布时间:2019-06-19

本文共 2026 字,大约阅读时间需要 6 分钟。

 

 

创建项目

scrapy startproject ithome

创建CrawSpider

scrapy genspider -t crawl IT ithome.com

items.py

1 import scrapy2 3 4 class IthomeItem(scrapy.Item):5     # define the fields for your item here like:6     # name = scrapy.Field()7     title = scrapy.Field()8     content = scrapy.Field()

it.py

1 import scrapy 2 from scrapy.linkextractors import LinkExtractor 3 from scrapy.spiders import CrawlSpider, Rule 4 from ithome.items import IthomeItem 5  6 class ItSpider(CrawlSpider): 7     name = 'it' 8     allowed_domains = ['ithome.com'] 9     start_urls = ['https://it.ithome.com/ityejie/']10 11     rules = (12         Rule(LinkExtractor(allow=r'ityejie/'), follow=True),13         Rule(LinkExtractor(allow=r'html/it/\d+.htm', restrict_xpaths='//*[@id="wrapper"]//*[@class="block"]'), callback='parse_item', follow=True),14     )15 16     def parse_item(self, response):17         i = {}18         #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()19         #i['name'] = response.xpath('//div[@id="name"]').extract()20         #i['description'] = response.xpath('//div[@id="description"]').extract()21 22         i['title'] = response.xpath('//*[@id="wrapper"]/div[1]/div[2]/h1/text()').extract()[0]23         i['content'] = response.xpath('//*[@id="paragraph"]/p/text()').extract()24         yield i

pipelines.py

1 import json 2  3 class IthomePipeline(object): 4  5  6     def __init__(self): 7         self.filename = open("it.json", "w") 8  9     def process_item(self, item, spider):10         text = json.dumps(dict(item), ensure_ascii = False) + ",\n"11         self.filename.write(text)12         return item13 14     def close_spider(self, spider):15         self.filename.close()
settings.py
1 BOT_NAME = 'ithome' 2  3 SPIDER_MODULES = ['ithome.spiders'] 4 NEWSPIDER_MODULE = 'ithome.spiders' 5  6  7  8 # Obey robots.txt rules 9 ROBOTSTXT_OBEY = False10 11 ITEM_PIPELINES = {12     'ithome.pipelines.IthomePipeline': 300,13 }

执行

scrapy crawl it

 

转载于:https://www.cnblogs.com/wanglinjie/p/9236168.html

你可能感兴趣的文章
【STM32 .Net MF开发板学习-23】DHT11温湿度传感器通信(下)
查看>>
extmail集群的邮件负载均衡方案 [lvs dns postfix]
查看>>
SCCM2012SP1---资产管理和远程管理
查看>>
Android Activity 之 startActivityForResult 的使用
查看>>
org.springframework.util 类 Assert的使用
查看>>
java提供类与cglib包实现动态代理
查看>>
flask上传多个文件,获取input中的数组
查看>>
更改UIView的背景
查看>>
JLNotebookView
查看>>
StackPanel
查看>>
SPUserResizableView
查看>>
UML类图示例
查看>>
sh ./ 执行区别
查看>>
宏定义(#ifndef+#define+#endif)的作用
查看>>
Prometheus安装部署以及配置
查看>>
Oracle存储过程大冒险-2存储过程常用语法
查看>>
taobao-pamirs-schedule-2.0源码分析——类设计
查看>>
10位程序员眼中的2007:寻找软件开…
查看>>
Stream API
查看>>
Web开发之-DOM操作对象
查看>>