scrapy爬虫

  1. 安装
    pip install Scrapy
    pip install win32api		
    

安装过程中可能会遇到的错误详见:https://blog.youkuaiyun.com/Small_Wchen/article/details/77750849

  1. 创建一个scrapy项目 如淘宝
    scrapy startproject myproject

  2. 创建第一个spiders文件

    cd myproject
    scrapy genspider baiduSpider baidu.com
    
  3. 示例:爬取菜鸟教程里的数据

    #spiders文件
    import scrapy
    from myspiders.items import RunoobItem
    
    
    class RunoobspiderSpider(scrapy.Spider):
    name = 'runoobSpider'
    allowed_domains = ['runoob.com']
    start_urls = ['http://www.runoob.com/']
    
    def parse(self, response):
    #用xpath方法获取想要的标签
        links=response.xpath('//div[@class="col nav"]/ul/li/a')
        items=[]
        for link in links:
        #创建一个item对象
            item=RunoobItem()
            #取到的是数组,所以[0]取到字符串,也可以用extract_first()
            item['href']=link.xpath('./@href')[0].extract()
            item['title']=link.xpath('./text()')[0].extract()
    
            items.append(item)
        return items
    
    #在items里创建一个新类
    from scrapy.item import Item,Field
    class RunoobItem(scrapy.Item):
        href=Field()  #域href=Field()  #域
        title=Field()title=Field()
    
  4. css,xpath,re都可以用来解析response

    #css选择器取属性值
    标签名::attr(属性名)
    #xpath取属性名
    @href
    
  5. 将解析完成的数据保存

    #控制台输入
    #运行文件,baiduSpider是你的name
    scrapy crawl baiduSpider
    #-o后面是保存数据的文件名
    scrapy crawl baiduSpider -o baidu.json
    
  6. 测试工具

    #首先安装iPython
    pip install iPathon
    #进入文件
    cd myproject
    #url是你要测试的网址
    scrapy shell url
    #开始测试
    response.xpath('')
    
  7. 爬取多页信息

    import scrapy
    from myspiders.items import mingyanItem
    
    
    class Mingyan2Spider(scrapy.Spider):
    name = 'mingyan2'
    allowed_domains = ['lab.scrapyd.cn']
    start_urls = ['http://lab.scrapyd.cn/page/1/']
    
    def parse(self, response):
        div=response.xpath('//div[@class="quote post"]')
        for d in div:
        #创建一个item
            item=mingyanItem()
            #文本
            item['text']=d.xpath('./span[@class="text"]/text()')[0].extract()
            #作者
            item['author']=d.xpath('./span/small/text()')[0].extract()
            #链接
            item['href']=d.xpath('./span/a/@href')[0].extract()
            yield item
    	
    	#获取下一页的链接
        next_page=response.xpath('//li[@class="next"]/a/@href')[0].extract()
        #链接是否存在
        if next_page:
        #把链接改为完整路径
            next_page = response.urljoin(next_page)
            #回调
            yield scrapy.Request(next_page,callback=self.parse)
        return item
    
  8. 爬取多页信息

    name = '51jobSpider'
    allowed_domains = ['51job.com']
    start_urls = []
    #第一种写法
    url='https://search.51job.com/list/070300,000000,0000,00,9,99,python,2,1.html'
    url='https://search.51job.com/list/070300,000000,0000,00,9,99,'
    for i in range(1,3):
         url = 'https://search.51job.com/list/070300,000000,0000,00,9,99,'
         query["page"]='2.{0}.html'.format(i)
         url=url+parse.urlencode(query)
         url=parse.quote(url,safe=string.printable)
         start_urls.append(url)
    #第二种写法
    def start_requests(self):
        query = {
                "q":"手机",
                "s":0
            }
        for i in range(2):
            url = "https://s.taobao.com/search?"
            query["s"]=i*48
            url=url+parse.urlencode(query)
            url=parse.quote(url,safe=string.printable)
            yield scrapy.FormRequest(url=url,callback=self.parse)
    
  9. 全局命令
    |命令 |作用 |
    |------------|------------------|
    |startproject|创建项目 |
    |genspider |创建蜘蛛 |
    |settings |查看设置了那些参数 |
    |runspider |基于文件运行py文件 |
    |shell |调试用 |
    |fetch |调试用,用于调试淘宝这类异步传输界面|
    |view |调试用 |
    |version |查看scrapy的版本 |

  10. 局部命令
    |命令|作用 |
    |–|--|
    |crawl |运行蜘蛛 |
    |check|检查蜘蛛|
    |list|蜘蛛的列表|
    |edit| |
    |parse| |
    |bench| |

### Scrapy 爬虫的构建与运行 Scrapy 是一个功能强大且高效的网络爬虫框架,能够用于多种数据采集任务。以下是关于如何使用 Scrapy 创建和运行网络爬虫的具体说明。 #### 1. 安装 Scrapy 在开始之前,需要确保已安装 Python 和 pip 工具。可以通过以下命令安装 Scrapy: ```bash pip install scrapy ``` #### 2. 创建 Scrapy 项目 创建一个新的 Scrapy 项目是构建爬虫的第一步。可以在终端中执行如下命令来初始化一个名为 `myproject` 的项目[^3]: ```bash scrapy startproject myproject ``` 这将在当前目录下生成一个文件夹 `myproject`,其中包含了必要的配置文件和模板代码。 #### 3. 配置 Spider 文件 进入刚刚创建的项目目录并打开 `spiders` 子目录下的 `.py` 文件(默认为空)。在此处定义具体的爬虫逻辑。例如,假设要抓取某个网站上的文章标题,则可以编写如下代码: ```python import scrapy class ExampleSpider(scrapy.Spider): name = 'example' # 爬虫名称 allowed_domains = ['example.com'] # 允许访问的域名列表 start_urls = ['https://www.example.com/'] # 初始请求地址 def parse(self, response): titles = response.css('h1::text').getall() # 提取页面中的 h1 文本内容 for title in titles: yield {'title': title} # 将结果作为字典返回 ``` 上述代码展示了如何通过 CSS 选择器提取网页中的 `<h1>` 标签内的文本,并将其保存为 JSON 数据[^1]。 #### 4. 运行爬虫 完成 Spider 编写之后,在项目根目录下运行以下命令启动爬虫: ```bash scrapy crawl example -o output.json ``` 此命令会调用名为 `example` 的爬虫并将输出保存至本地文件 `output.json` 中[^2]。 #### 5. 扩展功能——分布式爬虫 如果希望进一步提升效率或者应对大规模的数据需求,还可以引入 Redis 来实现分布式的任务调度。借助于第三方插件 **Scrapy-Redis** ,可以轻松搭建基于 Redis 的分布式架构[^4]: - 添加依赖项:`pip install scrapy-redis redis` - 修改 settings.py 文件启用相应中间件和服务端口设置。 --- ### 总结 以上介绍了从环境搭建到实际操作的一系列流程,帮助理解怎样运用 Scrapy 实现基本及高级别的网络爬虫开发工作流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值