最重要的官方文档
新建项目:scrapy startproject +项目名
新建爬虫:cd 项目名 后 scrapy genspider +爬虫文件名+爬取的域名
shell交互界面:scrapy shell +网址
运行爬虫:scrapy crawl + 爬虫文件(无后缀)
运行爬虫并保存输出文件:scrapy crawl + 爬虫文件(无后缀)-o 输出文件名(.json/.jl/.csv/.xml/.pickle/.marshal)

禁止ROBOTSTXT_OBEY
打开settings.py文件,将ROBOTSTXT_OBEY修改为False。
它默认为True,就是要遵守robots.txt 的规则,那么 robots.txt 是个什么东西呢?
通俗来说, robots.txt 是遵循 Robot 协议的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。
当然,我们并不是在做搜索引擎,而且在某些情况下我们想要获取的内容恰恰是被 robots.txt 所禁止访问的。所以,某些时候,我们就要将此配置项设置为 False ,拒绝遵守 Robot协议 !
所以在这里设置为False。当然可能本次爬取不一定会被它限制,但是我们一般来说会首先选择禁止它。
注意:
start_urls
爬虫启动后运行的url,Scrapy为爬虫的 start_urls属性中的每个URL创建了一个 scrapy.http.Request 对象 ,并将爬虫的parse 方法指定为回调函数。然后,这些 Request被调度并执行,之后通过parse()方法返回scrapy.http.Response对象,并反馈给爬虫。
回调函数
需要哪个函数来处理这个返回值,就调用哪个函数,返回值会以参数的形式传递给你所调用的函数。
Selectors
在Scrapy里面,Selectors 有四种基础的方法:
- xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点
- css():返回一系列的selectors,每一个select表示一个css参数表达式选择的节点
- extract():返回一个unicode字符串,为选中的数据
- re():返回一串一个unicode字符串,为使用正则表达式抓取出来的内容
yield item:将存储下来的item交由后续的pipelines处理
pipelines
pipelines主要用于数据的进一步处理,比如类型转换、存储入数据库、写到本地等。
pipelines是在每次spider中yield item 之后调用,用于处理每一个单独的item。
import json
class NjuptPipeline(object):
def __init__(self):
self.file = open('njupt.txt',mode='wb')
def process_item(self, item, spider):
self.file.write(item['news_title'].encode("GBK"))
self.file.write("\n")
self.file.write(item['news_date'].encode("GBK"))
self.file.write("\n")
self.file.write(item['news_url'].encode("GBK"))
self.file.write("\n")
return item
记得修改settings文件,pipelines才能生效

反反爬措施
加请求头
修改settings文件


网友评论