scrapy-5.scrapy其他

1.scrapy shell
因为我对xpath不太熟,所以这个主要是用于测试crawlspider里的restrict_xpaths=抽取的对不对的
进入是在terminal里输入 scrapy shell "网址"
我比较常用response.xpath('//h3/a')

2.创建项目
创建项目用scrapy startproject 项目名称。但是在windows里会默认创建到安装盘附近,比较难找,我比较推荐,在你想创建的文件夹,比如f盘下,点击红色箭头指的地方,输入cmd,然后在输入scrapy startproject 项目名称,就能在这个文件下创建成功,当然用cd也行。


创建位置

3.模板 scrapy genspider
在创建scrapy项目成功之后,有个提示,这个就是用模板创建spider的意思,按照它的步骤,先cd,然后scrapy genspider example(spider名称,不能跟项目名称重合),example.com,后来都可以改的。


按模板创建spider文件

结果


image.png

文件长这样。就是基础spider的样子。
import scrapy


class DoubancrawlerSpider(scrapy.Spider):
    name = 'doubanCrawler'
    allowed_domains = ['douban.com']
    start_urls = ['http://douban.com/']

    def parse(self, response):
        pass

4.terminal
terminal操作跟别的terminal一样,比较有用的是箭头↑是上一个指令

5.控制爬取数量 scrapy crawl douban -s CLOSESPIDER_ITEMCOUNT

crawlspider可能会出现爬取全站的情况,但是我只想试试爬虫是否可行,命令行输入scrapy crawl douban -s CLOSESPIDER_ITEMCOUNT=90
只爬取90个item

6.start_urls与start_requests()
文档说可以批量导入起始网址,像这样。
也可以自己构建,比如网址比较简单
url ='https://faxian.smzdm.com/p{}/'
urls=[url.format(i) for i in range(1,10)]

def start_requests(self):
    with open(“record.csv”) as f:
        reader = csv.DictReader(f)
        for item in reader:        
            yield scrapy.Request(url=item['url'], callback=self.parse_detail,dont_filter=True)

也可以传入data用于获取post的网址。

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        return [scrapy.FormRequest("http://www.example.com/login",
                                   formdata={'user': 'john', 'pass': 'secret'},
                                   callback=self.logged_in)]

    def logged_in(self, response):
        # here you would extract links to follow and return Requests for
        # each of them, with another callback
        pass

你可能感兴趣的:(scrapy-5.scrapy其他)