【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)

网内网速不太理想,下载速度很慢,所以不建议使用命令行输入pip install scrapy下载安装,建议使用离线安装。

文章导航

  • Scrapy第三方库安装教程
  • 创建Scrapy框架项目
  • 源码

Scrapy第三方库安装教程

1.安装scrapy库之前要先下载lxml,wheel,pywin32和twisted四个库。这四个库的安装就不进行演示了,安装方法都一样,举一反三,下载适合自己python版本的安装包。

下载地址:下载安装包
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第1张图片
2.下载成功后找到改安装包的路径,我将安装包放在了桌面上,然后打开命令提示符输入(pip install [这里是文件路径+文件名称])

‪pip3 install C:\User\XXXX\Desktop\Scrapy-2.2.1-py3-none-any.whl

【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第2张图片
好了,离线安装完成,其他的库都可以这样安装。

创建Scrapy框架项目

1.从pycharm中打开我们的终端
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第3张图片
2.创建Scrapy框架项目(scrapy startproject [项目名])

scrapy startproject jobscrapy

【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第4张图片
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第5张图片
3.进入项目目录,生成爬虫程序(scrapy genspider [爬虫名] [爬取域])

scrapy genspider jd www.jd.com

【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第6张图片
4.运行爬虫(scrapy crawl [爬虫名])

scrapy crawl jd 

【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第7张图片
5.如果启动过程中日志信息过多,可以通过设置减少日志信息
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第8张图片
再运行爬虫:
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第9张图片
6.从获取的网页源码中筛选出我们需要的数据
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第10张图片
【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第11张图片
7.创建一个Scrapy爬虫程序快速启动方式

# 启动爬虫程序
from scrapy.cmdline import execut
# 执行
execute(["scrapy","crawl","jd"

【保姆级教程】Scrapy库安装教程+Scrapy爬虫教程【一】(详细注释+爬虫源码)_第12张图片

源码

jd.py

#导入scrapy
import scrapy

# 创建爬虫类  并且继承scrapy.Spider --> 最基础的类 另外几个类都是继承自这个类
class JdSpider(scrapy.Spider):
    name = 'jd' #爬虫名字 --》 必须唯一
    allowed_domains = ['search.51job.com']  #允许采集的域名
    start_urls = ['https://search.51job.com/list/000000,000000,0000,32,9,99,'
                  '%25E8%25BD%25AF%25E4%25BB%25B6%25E5%25B7%25A5%25E7%25A8%258B%25E5%25B8%2588,'
                  '2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99'
                  '&ord_field=0&dibiaoid=0&line=&welfare=']  #开始采集的网站

    # 解析响应数据 提取数据 或者网址等  response就是网页源码
    def parse(self, response):
        # 提取数据
        r = response.xpath("//div[@class='el']") #选择标签
        for a in r:
            position = a.xpath("./p/span/a/text()")  # 职位   .代表在当前节点下继续选择 和 selectors
            company = a.xpath("./span[@class='t2']/a/text()")  # 公司
            address = a.xpath("./span[@class='t3']/text()")  # 地址
            salary = a.xpath("./span[@class='t4']/text()")  # 薪水
            time = a.xpath("./span[@class='t5']/text()")  # 时间
            # extract()和extract_first()都是从对象中获取数据
            if position.extract_first() is not None and company.extract_first() is not None and address.extract_first() is not None and salary.extract_first() is not None and time.extract_first() is not None:
                position = position[0].extract().strip()
                company = company[0].extract().strip()
                address = address[0].extract().strip().split("-")[0]  # "深圳-南山区" 只获取上级市
                salary = salary[0].extract().strip()
                time = time[0].extract().strip()
                # 打印输出
                print(position, company, address, salary, time)

execute.py

# 启动爬虫程序
from scrapy.cmdline import execut
# 执行
execute(["scrapy","crawl","jd"])

转载请注明出处

你可能感兴趣的:(python,python,经验分享)