Scrapy - 抓取时发现的抓取链接

2024-04-21

我只能假设这是 Scrapy 中最基本的事情之一,但我就是不知道如何去做。基本上,我会抓取一页来获取包含本周更新的网址列表。然后我需要一一进入这些网址并从中获取信息。我目前已经设置了两个刮刀,并且它们可以完美地手动工作。因此,我首先从第一个抓取器中抓取 url,然后将它们硬编码为第二个抓取器上的 start_urls[]。

最好的方法是什么?是否像调用 scraper 文件中的另一个函数一样简单,该函数获取 url 列表并在那里进行抓取?

这是获取 url 列表的抓取工具:

class MySpider(scrapy.Spider):
    name = "myspider"

    start_urls = [ .....
    ]


    def parse(self, response):
        rows = response.css('table.apas_tbl tr').extract()
        urls = []
        for row in rows[1:]:
            soup = BeautifulSoup(row, 'lxml')
            dates = soup.find_all('input')
        urls.append("http://myurl{}.com/{}".format(dates[0]['value'], dates[1]['value']))

这是一个会一一浏览 url 的抓取工具:

class Planning(scrapy.Spider):
    name = "planning"

    start_urls = [
       ...
    ]


    def parse(self, response):
        rows = response.xpath('//div[@id="apas_form"]').extract_first()
        soup = BeautifulSoup(rows, 'lxml')
        pages = soup.find(id='apas_form_text')
        for link in pages.find_all('a'):
            url = 'myurl.com/{}'.format(link['href'])

        resultTable = soup.find("table", { "class" : "apas_tbl" })

然后我将 resultTable 保存到一个文件中。目前,我获取 url 列表的输出并将其复制到另一个抓取工具中。


对于使用 parse 找到的每个链接,您可以请求它并使用其他函数解析内容:

class MySpider(scrapy.Spider):
    name = "myspider"

    start_urls = [ .....
    ]

    def parse(self, response):
        rows = response.css('table.apas_tbl tr').extract()
        urls = []
        for row in rows[1:]:
            soup = BeautifulSoup(row, 'lxml')
            dates = soup.find_all('input')
            url = "http://myurl{}.com/{}".format(dates[0]['value'], dates[1]['value'])
            urls.append(url)
            yield scrapy.Request(url, callback=self.parse_page_contents)

    def parse_page_contents(self, response):
        rows = response.xpath('//div[@id="apas_form"]').extract_first()
        soup = BeautifulSoup(rows, 'lxml')
        pages = soup.find(id='apas_form_text')
        for link in pages.find_all('a'):
            url = 'myurl.com/{}'.format(link['href'])

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

Scrapy - 抓取时发现的抓取链接 的相关文章

  • 在 Numpy 中切片后确定结果数组的形状

    我很难理解在 numpy 中切片后如何确定结果数组的形状 例如 我使用以下简单代码 import numpy as np array np arange 27 reshape 3 3 3 slice1 array 1 2 1 slice2
  • 如何在Python中循环并存储自变量中的值

    我对 python 很陌生 所以这听起来可能很愚蠢 我进行了搜索 但没有找到解决方案 我在 python 中有一个名为 ExcRng 的函数 我可以对该函数执行什么样的 for 循环 以便将值存储在独立变量中 我不想将它们存储在列表中 而是
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • 定义函数后对其进行修饰?

    I think答案是否定的 但我似乎找不到明确的说法 我有以下情况 def decorated function function functools wraps function def my function print Hello s
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • 更改 pandas 中多个日期时间列的时区信息

    有没有一种简单的方法可以将数据帧中的所有时间戳列转换为本地 任何时区 不是逐列进行吗 您可以有选择地将转换应用于所有日期时间列 首先 选择它们select dtypes https pandas pydata org pandas docs
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • 如何通过字符串匹配加速 pandas 行过滤?

    我经常需要过滤 pandas 数据框df by df df col name string value 并且我想加快行选择操作 有没有快速的方法可以做到这一点 例如 In 1 df mul df 3000 2000 3 reset inde
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏

随机推荐

  • 访问 ctypes 结构中的 np.array

    我有一个带有动态分配数组的 ctypes 结构 即 array 1d double npct ndpointer dtype np double ndim 1 flags CONTIGUOUS class Test Structure fi
  • 如何将多维 C 数组传递给函数? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至是多维 都存储在连续的内存中 因此您可以安全地将其转换为int 假设给定的数组是
  • Java、Spark 和 Cassandra java.lang.ClassCastException:com.datastax.driver.core.DefaultResultSetFuture 无法转换为阴影

    我在尝试将数据写入 Cassandra 数据库时遇到错误 我在这里得到了什么 1 字典 java package com chatSparkConnactionTest import java io Serializable public
  • Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境

    我有 Rails 3 2 应用程序和 gem websocket rails 0 7 在开发机器上 一切正常 在生产环境中 我使用 Nginx 1 6 作为代理服务器 使用 Unicorn 作为 http 服务器 Thin 用于独立模式 如
  • 如何在java中使用不同文件中的类?

    我是 Java 新手 这就是我正在尝试做的事情 我在 Windows 计算机上的此文件夹中有两个文件 d programs sims javasim src com jsim Person java Building java 在我的 Bu
  • 如何从 .t​​xt 文件中读取已知数量的未知大小的字符串并将每一行存储在矩阵的一行中(在 C 中)?

    标题是不言自明的 我几乎可以肯定 最终结果不会是一个矩阵 因为每行都有不同数量的列 所以它更像是可变大小的数组的数组 按大小对片段进行排序 最大的在前 也很有趣 这是我到目前为止所尝试过的 int main char str MAXLEN
  • 需要帮助升级我的 Rails 版本

    我是 Ruby on Rails 新手 我需要将我的rails版本从1 2 3升级到2 3 5 我在windows环境下使用mysql数据库工作 您能帮我清楚地说明升级rails版本所涉及的步骤吗 谢谢 正如您所说 您想要升级当前应用程序的
  • 在 JavaCameraView 中设置帧速率

    我想使用 JavaCameraView 将帧速率设置为 1 fps 当我打开相机时 帧速率约为 20 fps 我的目的是改变这个值 单击按钮后 1 fps 有人可以帮助我吗 我在互联网上搜索了很多 但我找不到任何有趣的东西 在文档中也htt
  • 无法在 Android 上使用 XOAUTH 连接到 Gmail IMAP

    我正在构建一个使用 Gmail 来备份一些数据的应用程序 我使用 XOAUTH 连接到 Gmail 并获取令牌和秘密 但我无法连接到 Gmail 的 IMAP 服务 我按照以下示例进行操作http code google com p goo
  • 将 HTML 作为 PHP 执行

    当我尝试将 PHP 嵌入到 HTML 文件中时 它不起作用 我编辑了 htaccess 以便将 HTML 文件视为 PHP 但是当我尝试访问 html 文件时 我的浏览器会下载它 而不是解析和显示它 编辑 我的 htaccess 内容 Ad
  • Java 源文件中可以有宏吗

    在我的程序中 我多次从控制台读取整数 每次 我都需要输入这一行 new Scanner System in nextInt 我习惯了 C C 我想知道我是否可以定义类似的东西 define READINT Scanner System in
  • Go 中通过 new(Type) 和 &Type{} 分配内存的区别

    考虑以下示例 type House struct func main house1 new House house2 House fmt Printf T T n house1 house2 Output main House main H
  • 超级丑陋的数字

    所以问题是 编写一个程序来查找第 n 个超级丑数 超级丑数是正数 其所有素数因子都在给定素数列表中 大小为 k 的素数 例如 1 2 4 7 8 13 14 16 19 26 28 32 是给定素数的前 12 个超级丑数的序列 2 7 13
  • 使用 v2.0 端点的声明中缺少 UPN

    我已经设置了一个类似于 Microsoft 的以下示例的项目 其中我有一个本机应用程序请求使用 v2 0 端点访问 Web api https github com azureadquickstarts appmodelv2 nativec
  • 通过SPARQL UPDATE从本体中删除空白节点

    我在 SPARQL UPDATE 插入 操作的帮助下将一些数据存储在 protege 中制作的本体模型中 以下是更新查询 PREFIX test
  • Direct3D 中的矩阵多阶

    关于在 Direct3D 中乘法矩阵以获得结果 我收到了两个相互矛盾的答案 教程确实规定从左到右相乘 这很好 但这不是我想象的方式 这是一个例子 OpenGL 从上到下阅读 GLRotatef 90 0f GLTranslatef 20 0
  • 将操作添加到自定义 UITableViewCell

    我正在构建一个简单的应用程序 其中包含填充了自定义视图单元格的表格视图并使用故事板 我想在用户每次点击单元格时在单元格上添加一个操作 到目前为止 我尝试创建一个IBOutle将我的手机连接到我的tableViewController并在代码
  • .net Ajax calendarExtender 在 IE7 中剪切星期六(在 Firefox 中工作正常)

    我在 IE7 中遇到了这个问题 日历中似乎缺少星期六 它在 Firefox 中显示良好 一些人建议这可能是我的其他样式表搞乱了它 所以我现在使用自定义日历 CSS 主题 但我仍然遇到同样的问题 有任何想法吗 使用的 ajax 工具包是否存在
  • GCP 计算实例的公共实例 CNAME

    Azure 提供了一种使用以下方式访问 VM 的方法 cloudapp net GCP中有类似的东西吗 如果是 我在哪里 如何查看访问实例的确切 CNAME 我读到它 googleapi com 但无法在 GCP 门户上的任何位置找到它 N
  • Scrapy - 抓取时发现的抓取链接

    我只能假设这是 Scrapy 中最基本的事情之一 但我就是不知道如何去做 基本上 我会抓取一页来获取包含本周更新的网址列表 然后我需要一一进入这些网址并从中获取信息 我目前已经设置了两个刮刀 并且它们可以完美地手动工作 因此 我首先从第一个