Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Scrapy制作爬虫

Scrapy制作爬虫

原创
作者头像
用户6172015
修改于 2020-11-03 09:53:20
修改于 2020-11-03 09:53:20
41100
代码可运行
举报
文章被收录于专栏:网络爬虫网络爬虫
运行总次数:0
代码可运行

编写爬虫:

通过爬虫语言框架制作一个爬虫程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import scrapy
from tutorial.items import DmozItem
class DmozSpider(scrapy.Spider):
    name = 'dmoz'
    allowed_domains = ['dmoz.org']
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]
    def parse(self, response):
        sel = Selector(response)
        sites = sel.xpath('//ul[@class="directory-url"]/li')
        for sel in sites:
            item = DmozItem() # 实例化一个 DmozItem 类
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item

爬虫爬取: 通过爬虫程序输入命令,执行爬虫采集目标网站

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! -*- encoding:utf-8 -*-
        import base64            
        import sys
        import random

        PY3 = sys.version_info[0] >= 3

        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str

            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes

        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理服务器(产品官网 www.16yun.cn)
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"

                # 代理验证信息
                proxyUser = "username"
                proxyPass = "password"

数据保存:

Scrapy爬虫方式一般分为4种,可以参考以下保存方式

json格式,默认为Unicode编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy crawl itcast -o teachers.json

json lines格式,默认为Unicode编码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy crawl itcast -o teachers.jsonl

csv 逗号表达式,可用Excel打开

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy crawl itcast -o teachers.csv

xml格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
scrapy crawl itcast -o teachers.xml

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[爬虫]scrapy框架
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
周小董
2019/03/25
1.3K0
[爬虫]scrapy框架
(原创)七夜在线音乐台开发 第三弹 爬虫篇
上一篇咱们讲到了七夜音乐台的需求和所需要的技术。咱们今天就讲一下爬虫,为什么要讲爬虫,因为音乐台的数据源需要通过爬虫来获取,不可能手动来下载。下图是一个网络爬虫的基本框架: 网络爬虫的基本工作流程如下
七夜安全博客
2018/06/26
1.1K0
爬虫——scrapy入门
scrapy 安装scrapy pip install scrapy windows可能安装失败,需要先安装c++库或twisted,pip install twisted 创建项目 scrapy startproject tutorial 该命令将会创建包含下列内容的 tutorial 目录: tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py
py3study
2020/01/19
5800
Scrapy:python3下的第一次运
1,引言 《Scrapy的架构初探》一文讲解了Scrapy的架构,本文就实际来安装运行一下Scrapy爬虫。本文以官网的tutorial作为例子,完整的代码可以在github上下载。 2,运行环境配置
py3study
2020/01/06
3360
开源python网络爬虫框架Scrapy
所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。不过由于一个网站的网页很多,而我们又不可能事先知道所有网页的URL地址,所以,如何保证我们抓取到了网站的所有HTML页面就是一个有待考究的问题了。
py3study
2020/01/07
1.8K0
Scrapy框架进阶学习
之前有跟大家分享过爬虫中关于Scrapy框架的使用,今天我们再一次进阶的讲述下这个框架,在爬虫众多框架里面Scrapy 属于佼佼者。它为我们提前想好了很多步骤和要处理的边边角角的问题,而使用者可以专心于处理解析页面、分析请求这种最核心的事情。
小白学大数据
2022/04/22
3460
python爬虫----(4. scrapy框架,官方文档以及例子)
官方文档: http://doc.scrapy.org/en/latest/ github例子: https://github.com/search?utf8=%E2%9C%93&q=sc
lpe234
2020/07/27
7250
python框架之Pyspider和Scrapy的区别
对于一些简单的爬虫需求来说,只是简单的利用 requsets, xpath 等爬虫库就可以。但是如果是更复杂的需求这些简单的爬虫库远远无法达到一个爬虫框架的要求。一个爬虫框架的雏形,应该包含调度器、队列、请求对象等。我们平时写的爬虫程序,连最基本的框架都不具备。
小白学大数据
2023/05/06
7620
数据采集-Scrapy框架使用代理IP要点
scrapy框架通过模块化的设计实现了数据采集的通用功能接口,并提供自定义拓展,它将程序员从繁冗的流程式重复劳动中解放出来,给编程人员提供了灵活简便的基础构建,对于普通的网页数据采集,编程人员只需要将主要精力投入在网站数据分析和网站反爬策略分析上,结合代理IP的使用,可以实现项目的高效快速启动。 主要特性包括: 1)参数化设置请求并发数,自动异步执行 2)支持xpath,简洁高效 3)支持自定义中间件middleware 4)支持采集源列表 5)支持独立调试,方便 shell 方式 6)支持数据管道接口定义,用户可以选择文本、数据库等多种方式 在Scrapy框架中使用代理的方式有如下几种: 1.scrapy中间件 在项目中新建middlewares.py文件(./项目名/middlewares.py),内容如下: #! -- encoding:utf-8 -- import base64 import sys import random PY3 = sys.version_info[0] >= 3 def base64ify(bytes_or_str): if PY3 and isinstance(bytes_or_str, str): input_bytes = bytes_or_str.encode(‘utf8’) else: input_bytes = bytes_or_str output_bytes = base64.urlsafe_b64encode(input_bytes) if PY3: return output_bytes.decode(‘ascii’) else: return output_bytes class ProxyMiddleware(object): def process_request(self, request, spider): # 代理服务器(产品官网 www.16yun.cn) proxyHost = “t.16yun.cn” proxyPort = “31111” # 代理验证信息 proxyUser = “username” proxyPass = “password” request.meta[‘proxy’] = “http://{0}:{1}”.format(proxyHost,proxyPort) # 添加验证头 encoded_user_pass = base64ify(proxyUser + “:” + proxyPass) request.headers[‘Proxy-Authorization’] = 'Basic ’ + encoded_user_pass # 设置IP切换头(根据需求) tunnel = random.randint(1,10000) request.headers[‘Proxy-Tunnel’] = str(tunnel) 修改项目配置文件 (./项目名/settings.py) DOWNLOADER_MIDDLEWARES = { ‘项目名.middlewares.ProxyMiddleware’: 100, } 2.scrapy环境变量 通过设置环境变量,来使用爬虫代理(Windows) C:>set http_proxy=http://username:password@ip:port
小白学大数据
2024/06/08
9820
爬虫框架Scrapy的第一个爬虫示例入门教程
豌豆贴心提醒,本文阅读时间8分钟 我们使用dmoz.org这个网站来作为小抓抓一展身手的对象。 首先先要回答一个问题。 问:把网站装进爬虫里,总共分几步? 答案很简单,四步: 新建项目 (Project):新建一个新的爬虫项目 明确目标(Items):明确你想要抓取的目标 制作爬虫(Spider):制作爬虫开始爬取网页 存储内容(Pipeline):设计管道存储爬取内容 好的,基本流程既然确定了,那接下来就一步一步的完成就可以了。 1.新建项目(Project) 在空目录下按住Shift键右击,选择
小小科
2018/05/03
1.2K0
爬虫框架Scrapy的第一个爬虫示例入门教程
python3和scrapy使用隧道代理问题以及代码
最近有个项目需要爬取药监局数据,对方有ip屏蔽机制。所以我需要在scrapy中实现ip自动切换,才能够完成爬取任务。在此之前,我先使用过第三方库scrapy-proxys加上代理api接口,可能是代码没有完善好,导致测试没有成功。 所以这次选择使用隧道的方式来测试看下,使用的是python3和scrapy库一起测试看下效果。
小白学大数据
2024/06/08
1640
scrapy初试
定义item Item是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。 类似在ORM中做的一样,您可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field的类属性来定义一个Item。 (如果不了解ORM, 不用担心,您会发现这个步骤非常简单) 首先根据需要从dmoz.org获取到的数据对item进行建模。 我们需要从dmoz中获取名字,url,以及网站的描述。 对此,在item中定义相应的字段。编辑 tutorial 目录中的 items.py 文件:
爱撒谎的男孩
2019/12/30
3600
Scrapy中间件采集HTTPS网站失败的原因
Scrapy 是一个基于 Python 的网络抓取框架,可以帮助开发人员从网站中快速有效地提取数据。Scrapy 的一个显著优势是可以通过中间件来定制和优化抓取过程。中间件是一种插件,可以在请求和响应之间执行特定的功能,例如更换用户代理、管理 cookie 和处理重定向。Scrapy 中间件还可以让用户设置代理 IP,这对于从有反抓取措施的网站抓取大量数据非常有用。使用代理 IP 可以隐藏用户的真实身份,避免被网站封禁。总之,Scrapy 中间件提供了一种灵活且可定制的方式来改善网络抓取过程。 要使用代理 IP,可以编写一个中间件组件,在请求对象中设置代理和认证信息,这样Scrapy 就会使用代理和认证信息来访问网站。在项目中新建middlewares.py文件(./项目名/middlewares.py),下面是相应的代码:
jackcode
2023/04/13
5000
Scrapy中间件采集HTTPS网站失败的原因
Scrapy爬虫模拟登陆参考demo
对于一些刚入行爬虫的小伙伴来说,刚开始的时候觉得所有的网站无非就是分析HTML、json数据,很容易忽忽略掉一个很重要的问题,那就是目标网站的反爬虫策略,很多目标网站为了反爬虫经常更新反爬策略,我们想要拿到数据,就需要针对它们的反爬虫来制定绕过方法,比如它识别你的UserAgent,那你可能就需要伪造、它限制IP请求次数,你可能就需要限速或者改变ip、它用验证码来识别你是人是机,你就需要模拟人的操作并且正确填写它给你弹出的验证码等等。
小白学大数据
2023/06/20
3030
python在网络爬虫领域的应用
Python 作为一种功能强大的编程语言被很多人使用。那么问题来了,Python 的应用领域有哪些呢?
小白学大数据
2023/03/23
4950
python下scarpy爬虫代理错误407
我们在数据采集过程中程序会经常返回一些状态码,响应HTTP请求会返回响应状态码,根据状态码可以知道返回信息代表什么意思。今天我们来分享下关于407。一般爬虫程序是不会返回407的,一般出现407是在我们程序挂了代理以后,比如我们的爬虫程序中添加了由亿牛云提供的爬虫隧道代理。但是运行后程序就报了407错误。
小白学大数据
2023/04/26
4570
python爬虫在情感分析领域的应用
情感分析又叫意见挖掘, 是一个研究人们对某种事物,例如产品,话题,政策的意见,情绪或者态度的领域。 随着网路上意见型数据的爆发,情感分析也被广泛研究和应用。
小白学大数据
2023/05/17
4820
如何使用Scrapy框架爬取301跳转后的数据
在我们python强大的库里面,Scrapy是一个功能强大的网络爬虫框架,允许开发者轻松地抓取和解析网站内容。在爬取有些网站数据的时候会遇到网页跳转的情况,一般HTTP返回状态码是200,非200状态码,需要单独处理。Scrapy默认只处理200状态码响应,非200状态码响应需要单独设置,如301永久跳转。
小白学大数据
2023/06/14
6690
python爬虫常见状态码之504错误
python爬虫请求网站然后抓取数据返回的过程之中,实际上是通过http超文本传输协议将自己的请求信息发送到了网站上等待响应,而网站响应之后就会返回状态码以及相关的数据回去。我们需要快速地对http请求返回的各种异常状态码来判断处理,以便于我们及时调整爬虫策略,优化思路,及时完成爬虫任务。
小白学大数据
2023/05/23
4810
项目配置之道:优化Scrapy参数提升爬虫效率
在当今信息时代,数据是无处不在且无比重要的资源。为了获取有效数据,网络爬虫成为了一项至关重要的技术。Scrapy作为Python中最强大的网络爬虫框架之一,提供了丰富的功能和灵活的操作,让数据采集变得高效而简单。本文将以爬取豆瓣网站数据为例,分享Scrapy的实际应用和技术探索。
小白学大数据
2024/03/22
4720
相关推荐
[爬虫]scrapy框架
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验