scrapy的注意点的问题

2023-11-02

1.以豆瓣网为例分享一下scrapy使用中需要注意的地方:

2.注意点:

  1. response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法
  2. extract() 返回一个包含有字符串的列表
  3. extract_first() 返回列表中的第一个字符串,列表为空没有返回None
  4. spider中的parse方法必须有
  5. 需要抓取的url地址必须属于allowed_domains,但是start_urls中的url地址没有这个限制
  6. 启动爬虫的时候注意启动的位置,是在项目路径下启动,就是项目文件需要单独打开
  7. 单独打开项目文件的方法:

 (1)找到file->open

 

 (2) 点击file->open

 

(3)选好自己的项目文件以后选择打开方式为newwindow 

 3.豆瓣项目示例

import scrapy

class DoubanTestSpider(scrapy.Spider):
    name = 'douban_test'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/top250?start=%s&filter='%i for i in range(0,226,25)]

    def parse(self, response):
        urls = response.xpath('//*[@id="content"]/div/div[1]/ol/li[*]/div/div[1]/a/@href').getall()
        # 获取所有详情页的url
        for url in urls:
            item = {}
            yield scrapy.Request(url,callback=self.parse_detail,meta={'item':item})

    def parse_detail(self,response):
        title_ = response.xpath('//*[@id="content"]/h1/span[1]/text()').get()
        score_ = response.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong//text()').get()
        time_ = response.xpath('//div[@class="subjectwrap clearfix"]/div/div/span[@property="v:runtime"]/@content').get()
        type_ = response.xpath('//div[@class="subject clearfix"]/div/span[@property="v:genre"][1]/text()').getall()
        num_ = response.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/div/div[2]/a/span/text()').get()
        propotion_ = response.xpath('//*[@id="interest_sectl"]/div[1]/div[3]/div[1]/span[2]/text()').get()
        item = response.meta.get('item')
        item['title'] = title_
        item['score'] = score_
        item['time'] = time_
        item['type'] = ''.join(type_)
        item['num'] = num_
        item['propotion'] = propotion_
        yield item

4.开启pipeline

from itemadapter import ItemAdapter

import pymysql
class DoubanPipeline:
    def process_item(self, item, spider):
        conn = pymysql.connect(user='root',password='081228ljf',
                        charset='utf8',database='douban')
        cur = conn.cursor()
        cur.execute('insert into films value("%s","%s","%s","%s","%s","%s")'%
                    (item['title'],item['score'],item['time'],item['type'],item['num'],item['propotion']))
        conn.commit()
        cur.close()
        conn.close()
        return item

5.注意pipeline保存数据前要先在settings中开启管道接口

6.setting s设置请求头

# Scrapy settings for Douban project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html

BOT_NAME = 'Douban'

SPIDER_MODULES = ['Douban.spiders']
NEWSPIDER_MODULE = 'Douban.spiders'


# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'

# Obey robots.txt rules
ROBOTSTXT_OBEY = True

# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
#DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16

# Disable cookies (enabled by default)
COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False

# Override the default request headers:
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
    'Cookie': 'douban-fav-remind=1; ll="118163"; bid=vxwT8bzpjHA; __gads=ID=44c122f089ed5da4-2281cc7b31d000bf:T=1643175816:RT=1643175816:S=ALNI_MYbpA_3kd91woNUI_rhk323TW9zYQ; _ga=GA1.2.2065482662.1604846529; __yadk_uid=vdmf7Lm3cIWf9yGoGJVNWSi0CRqEctcp; __gpi=UID=00000485465e7c61:T=1649171757:RT=1649171757:S=ALNI_Mas4xcxVTd-ydhslNdy3PLs3RTjmQ; _vwo_uuid_v2=D13DCA7A0C2EF878ED1AAE1B7FD8861CF|d9847755add0d5530c50bdef513d7a6d; _vwo_uuid_v2=D13DCA7A0C2EF878ED1AAE1B7FD8861CF|d9847755add0d5530c50bdef513d7a6d; gr_user_id=084374e4-236c-43d3-94d4-8837ad999083; ap_v=0,6.0; __utma=30149280.2065482662.1604846529.1651568744.1651572480.34; __utmc=30149280; __utmz=30149280.1651572480.34.13.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmt=1; __utmb=30149280.1.10.1651572480; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1651572481%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; _pk_ses.100001.4cf6=*; __utma=223695111.436626640.1604928846.1651568745.1651572481.28; __utmb=223695111.0.10.1651572481; __utmc=223695111; __utmz=223695111.1651572481.28.12.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; _pk_id.100001.4cf6=d8b22cf303aa9232.1604928846.28.1651572487.1651568768.'
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scrapy的注意点的问题 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何使用包含代码的“asyncio.sleep()”进行单元测试?

    我在编写 asyncio sleep 包含的单元测试时遇到问题 我要等待实际的睡眠时间吗 I used freezegun到嘲笑时间 当我尝试使用普通可调用对象运行测试时 这个库非常有用 但我找不到运行包含 asyncio sleep 的测
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • SQL Alchemy 中的 NULL 安全不等式比较?

    目前 我知道如何表达 NULL 安全的唯一方法 SQL Alchemy 中的比较 其中与 NULL 条目的比较计算结果为 True 而不是 NULL 是 or field None field value 有没有办法在 SQL Alchem
  • Python tcl 未正确安装

    我刚刚为 python 安装了graphics py 但是当我尝试运行以下代码时 from graphics import def main win GraphWin My Circle 100 100 c Circle Point 50
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • IRichBolt 在storm-1.0.0 和 pyleus-0.3.0 上运行拓扑时出错

    我正在运行风暴拓扑 pyleus verbose local xyz topology jar using storm 1 0 0 pyleus 0 3 0 centos 6 6并得到错误 线程 main java lang NoClass
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql

随机推荐

  • 微信小程序压缩wxml

    背景 微信小程序添加webpack压缩之后 支持js css等压缩 但是wxml没有找到对应的api 后来看到小程序可以启动自定义编译命令 兜兜转转找到了一些命令来实现wxml的压缩 记录如下 需要的伙伴自取 命令输入位置如下图 命令如下
  • 安装教程rtx2080ti_Ubuntu18.04上安装RTX 2080Ti显卡驱动

    上了RTX 2080Ti显卡后 原来Ubuntu18 04内置的驱动和PPA安装的都不运作了 安装NVidia官网下载的驱动可以跑起来 但是需要费一些周折 1 禁用系统默认显卡驱动 打开系统黑名单 sudo gedit etc modpro
  • 网页游戏《天书世界》屌丝修仙记

    天书世界修仙 无限小号刷打宝塔 得到的金钱数据对比 终极玩法 天书世界 修仙 看了一些玄幻修仙小说 主人公屌丝逆袭白富美的攻略只有一个 就是不同常人的隐藏技能 作为工程师 羡慕没鸟用 还是实践一下 看看是否有潜质 于是搞了一个网页游戏 耍耍
  • JAVA面试题汇总

    JAVA面试题汇总 一 java基础篇 1 final 关键字的作用 被 final 修饰的类不可以被继承 被 final 修饰的方法不可以被重写 被 final 修饰的变量不可以被改变 如果修饰引用 那么表示引用不可变 引用指向的内容可变
  • Mybatis中的statementType="STATEMENT"使用注意

    今天遇到如下问题 Cause com mysql jdbc exceptions jdbc4 MySQLSyntaxErrorException You have an error in your SQL syntax check the
  • vulnhub靶场 DC-1

    过程曲曲折折 中途还看了下题解才断断续续的完成这个靶场 只能说技术不到家 攻击机 kali ip 192 168 16 134 靶场 ip 192 168 16 149 首先是到vulnhub官网去下载DC 1的靶场这里就不讲如何下载了 直
  • 【100天精通python】Day34:使用python操作数据库_ORM(SQLAlchemy)使用

    目录 专栏导读 1 ORM 概述 2 SQLAlchemy 概述 3 ORM SQLAlchemy使用 3 1 安装SQLAlchemy 3 2 定义数据库模型类 3 3 创建数据表 3 4 插入数据 3 5 查询数据 3 6 更新数据 3
  • SpringBoot 系统全局异常处理

    1 编写系统全局异常处理类要求 1 定义全局异常处理类 使用 ControllerAdvice 注解标签修饰 2 处理指定异常类信息 通过 ExceptionHandler 注解标签修饰 3 处理指定异常类是否向前端返回错误信息 如果需要向
  • Restful API 的设计规范

    Restful API 的设计规范 Restful API 的设计规范 1 URI URI规范 资源集合 vs 单个资源 避免层级过深的URI 对Composite资源的访问 2 Request HTTP方法 安全性和幂等性 复杂查询 Bo
  • Effective STL学习

    引言 以下为个人的一些读书心得 对于部分比较浅显易懂的就不再赘述 只是日常使用中不太会留意到的加以解释 第一章 容器 第一条 慎重选择容器类型 第二条 不要试图编写独立于容器类型的代码 第三条 确保容器中的对象拷贝正确而高效 第四条 调用e
  • Android 模拟双击点赞脚本

    以下代码通过GPT3 5生成 bin bash 点击次数范围 CLICK COUNT MIN 20 CLICK COUNT MAX 30 每次点击间隔范围 CLICK INTERVAL MIN 3000 CLICK INTERVAL MAX
  • STM32F103C8T6在线升级 IAP

    stm32程序每次执行都会从基地址0x800 0000开始执行 IAP程序升级的执行是在bootloader引导文件执行后 进行加载 跳转APP程序 所以每次上电后进入BootLoader判断是否需要升级 如果升级则接受bin文件 如果不升
  • 关于micropython无法计算MD5的问题 AttributeError: ‘module‘ object has no attribute ‘md5‘

    不可能 绝对不可能 我大MPY不能算md5 我一试还特么真是 文档写的明明白白 一跑就是没有方法 AttributeError module object has no attribute md5 mpy 你在干什么 这个错误好几年没有修
  • 容器部署虚拟机还是物理服务器,容器docker装在虚拟机上吗

    容器 无论是虚拟机还是物理机 都是硬件 基础设施的一种交付方式 本质上是一个层次的 而容器主要要解决以软件为中心的系列问题 开发 测试 部署 发布 运行 在虚拟机中运行容器 已经成为一种实践中的惯例 比如 AWS的container服务就是
  • JVM--基础--26.1--工具--jps

    JVM 基础 26 1 工具 jps 1 介绍 查看所有的jvm进程 包括进程ID 进程启动的路径等等 2 语法 2 1 格式 jps options hostid 2 2 参数说明 2 2 1 options q 只输出java进程的进程
  • el-date-picker 兼容IE浏览器

    一 问题描述 element组件之el date picker 在chrome浏览器中正常显示 而在IE浏览器却无法显示值 此时 需要设置value format属性
  • window.open同时打开多个页面

    在项目中遇到一个问题 需要点击按钮以后同时打开两个页面 我使用了window open方法 但是最后的表现是只打开了第一个 第二个被吞了 调试的浏览器是chrome 然后在浏览器地址栏的右边弹出一个小图标 点击发现是浏览器自动拦截弹出式窗口
  • Storm 常见问题

    原文 http weyo me pages techs storm questions Storm 安装与运维问题 运行 storm 命令报错 出现语法错误 File home storm apache storm 0 9 3 bin st
  • 浮点数转日期

    在实际工作中发现 在导入excel时 读取cell时 经常有人将日期变成了一个double类型 该double类型的整数部分表示1900年以来的天数 小数表示当天的描述 因此 在Python中 就可以用timedelta进行加减 计算出该d
  • scrapy的注意点的问题

    1 以豆瓣网为例分享一下scrapy使用中需要注意的地方 2 注意点 response xpath方法的返回结果是一个类似list的类型 其中包含的是selector对象 操作和列表一样 但是有一些额外的方法 extract 返回一个包含有