新手向爬虫(三)别人的爬虫在干啥

作者: treelake | 来源:发表于2016-11-06 22:42 被阅读12589次

古人云博采众长,我们来看看其他人的爬虫是怎么学和用的:

爬虫文章 in 简书程序员专题:

  1. like:128 - Python 爬取落网音乐

使用Scrapy爬取上述列表

安装Scrapy

  • 下载文件:lxmltwisted;并在该页面上搜索scrapy并下载whl文件,最后使用pip install x.whlx为 whl文件名,依次安装三个文件。
  • 我下载的都是cp35-cp35m-win_amd64.whl,win7安装成功。

简单快速的Scrapy

  • 编辑名为num1.py的文件添加以下内容,使用命令行scrapy runspider num1.py -o 1.json在文件当前所在目录下运行文件,表示使用Scrapy执行该爬虫并将输出数据保存为json文件。
  • 整个爬取过程花费了212.98秒,平均每个页面花费0.053秒
# -*- coding: utf-8 -*-
# 文本编辑器编码要设置对,最好为UTF-8无BOM编码
import scrapy

class Num1Spider(scrapy.Spider):
    name = "num1" # 爬虫命名,在项目中有用
    allowed_domains = ["jianshu.com"] # 允许爬取的域名
    domain = 'http://jianshu.com' # 自己设置的基础域名变量

    headers = {
        "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
    } # 请求头
    base_url = 'http://www.jianshu.com/collections/16/notes?order_by=added_at&page=%d'
    # 关于此处url,参看新手向爬虫(一)
    num = 0 # 页数
    
    def start_requests(self): # 默认的开始函数,用于提供要爬取的链接
        # url = self.base_url % self.num
        while self.num < 4000: # 程序员专题总页数小于4000,共花费212.975027秒
            self.num += 1
            yield scrapy.Request(self.base_url % self.num,
                             headers = self.headers,
                             callback = self.parse)
                             
    def parse(self, response):  # 默认的回调函数,用于链接下载完毕后调用来处理数据
    
        for index,i in enumerate(response.css(".title a::text").extract()):
            if "爬虫" in i or "爬取" in i:
                like = response.css("a + span::text").extract()[index].replace(' · 喜欢 ', '')
                url = self.domain + response.css('.title a::attr(href)').extract()[index]
                yield {"title" : i, "like": like, "url": url}
                                

######################## Debug ###############################        
#        from scrapy.shell import inspect_response
#        inspect_response(response, self)
# 将以上两句插入回调函数中任意位置,即可在运行过程中中断打开交互命令行,用于调试查看响应内容
######################## Run   ###############################       
# scrapy runspider num1.py -o 1.json

文本后处理

  • 用于从上一步生成的json文件中提取数据并排序生成简单的markdown。
# -*- coding: utf-8 -*-
import json

with open('1.json','r') as f:
    data = json.load(f)
    data = sorted(data, key =lambda x: int(x['like']), reverse=True)
    # 以喜欢数对文章进行排序
    with open('1.md', 'w') as m:
        m.write('### 爬虫文章 in 简书程序员专题:\n')
        for i in data:
            m.write('- *like*:**{like}** - [{title}]({url})\n'.format(**i))
            # **i 表示解包字典

Scrapy官方文档

相关文章

  • 新手向爬虫(三)别人的爬虫在干啥

    爬虫文章 in 简书程序员专题: like:128 - Python 爬取落网音乐 like:127 - 【图文详...

  • Python多进程妹子图爬虫升级版

    可能很多爬虫新手都是从爬取漂亮的妹子开始的,本爬虫新手也是,之前在网上也找到很多爬虫代码,下面讲的爬虫是在之前网友...

  • 新手向爬虫(二)站点分析

    在新手向爬虫(一)利用工具轻松爬取简书并分析中我们初步接触了爬虫,关键在于: 通过工具获取网页内容选择器 分析页面...

  • 认识爬虫

    前言 我的爬虫笔记 经常看别人通过爬虫分析数据,很有意思,来了兴趣,就开始了爬虫之路。 爬虫 爬虫,即网络爬虫,大...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • python-爬虫基础(慕课网)

    二.爬虫简介以及爬虫的技术价值 2-1:爬虫是什么? 2-2:爬虫技术的价值? 三.简单爬虫架构 3-1:简单爬虫...

  • 爬虫05-技术选型与爬虫能做什么

    今天主要想讨论一下编写爬虫的技术选型,以及爬虫到底能干啥。 首先,我们来看下爬虫编写的技术选型,粗略地分为两类进行...

  • python爬虫抓取app列表的图标

    python爬虫抓取app列表的图标 爬虫简介 所谓的爬虫简单来说,就是通过不断的变化http请求的url,向服务...

  • 2019-11-20 看到这个

    浏览github别人的爬虫时看到这个。。 先暂停写爬虫吧。。。

  • Python爬虫进阶-前言

    本系列笔记聊一聊,Python爬虫如何进阶,探讨如何系统的完成爬虫进阶。 在正式开篇之前,如果是新手,建议先了解如...

网友评论

本文标题:新手向爬虫(三)别人的爬虫在干啥

本文链接:https://www.haomeiwen.com/subject/hffwuttx.html