Scrapy爬虫只抓取一件物品,而不是全部

奇迹

我正在尝试使用以下代码从此页面抓取以A开头的项目

import scrapy
from scrapy.selector import Selector
from ..items import RozeepkItem
class JobcatsSpider(scrapy.Spider):
    name = 'jobcats'
    allowed_domains = ['www.rozee.pk']
    start_urls = ['https://www.rozee.pk/jobs-by-industry']

    

    def parse(self, response):
        items = RozeepkItem()
        for job_cat in Selector(response).xpath("//div[@class = 'boxb job-dtl sitemap']"):
            category_title =  job_cat.xpath(".//div[@id = 'A-block']/div[@class = 'row']/ul/li/a/@title").get()
            url = job_cat.xpath(".//div[@id = 'A-block']/div[@class = 'row']/ul/li/a/@href").get()

            items['job_category'] = category_title
            items['url_str'] = url

            yield items

以下是 items.py

import scrapy
class RozeepkItem(scrapy.Item):
    job_category = scrapy.Field()
    url_str = scrapy.Field()

它给出输出

2020-06-27 06:55:00 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.rozee.pk/jobs-by-industry>
{'job_category': 'Accounting Jobs in Pakistan',
 'url_str': '//www.rozee.pk/search/accounting-jobs-in-pakistan'}
2020-06-27 06:55:00 [scrapy.core.engine] INFO: Closing spider (finished)
2020-06-27 06:55:00 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 232,
 'downloader/request_count': 1,
 'downloader/request_method_count/GET': 1,
 'downloader/response_bytes': 16977,
 'downloader/response_count': 1,
 'downloader/response_status_count/200': 1,
 'elapsed_time_seconds': 2.227556,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 6, 27, 1, 55, 0, 379725),
 'item_scraped_count': 1,
 'log_count/DEBUG': 2,
 'log_count/INFO': 10,
 'response_received_count': 1,
 'scheduler/dequeued': 1,
 'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
 'start_time': datetime.datetime(2020, 6, 27, 1, 54, 58, 152169)}
2020-06-27 06:55:00 [scrapy.core.engine] INFO: Spider closed (finished)

可以看出,我只得到一个项目及其对应的链接,另一方面,如果我在浏览器中尝试此xpath,则可以获得所有信息,如以下屏幕截图所示。

xpath屏幕截图

有人可以帮我解决我犯错的地方吗?谢谢

维斯特

从文档:

.get()总是返回单个结果;如果有多个匹配项,则返回第一个匹配项的内容;如果没有匹配项,则返回None。.getall()返回带有所有结果的列表。

因此,.getall()请不要在代码中使用get()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使一件物品向右浮动

根据重量获取一件物品的频率

如何从抽屉式Android隐藏一件物品

背包但可以多次选择一件物品?

如何将一件物品正确对齐并使一件物品与Bootstrap 4对齐?

计算在多于一件货件上收到物品时收到的物品总数

立即交付第一件物品,随后的物品“反跳”

即使有很多物品,RecyclerView也仅显示一件物品

制作只做一件事的函数

ReactiveCocoa-如何一次从RACSequence获取一件物品?

Flex-wrap只将一件物品包装在容器中

为什么我的嵌套循环只附加 python 中的最后一件事?

牵线木偶将一件物品添加到收藏活动中被触发两次

当用户能够移动一件物品时,如何获取我的代码变量来更改totalMoves?

Scrapy Spider只抓取一次网址

使用 onClick 调用相同的函数适用于一件事而不是另一件事?

使用FROM子句而不是JOIN子句联接表是同一件事吗?

刮N件物品后停止Scrapy

Python Scrapy 只一遍又一遍地抓取相同的元素

IntersactionObserver() 只观察一行的第一个元素而不是全部

如果 php 标记不是文件中的第一件事,则 PHP 会话不起作用

简单的Scrapy爬虫不关注链接和抓取

我的刮板产生了太多的物品,而不是将它们全部合并成一小堆

React - 只切换一个按钮,而不是全部

Jquery 只选择带有类的第一个元素而不是全部

是否可以只导入一个配置参数,而不是全部在 Hydra 中?

Java结果集只写一行而不是全部选择到.csv

Scrapy 只抓取和抓取 HTML 和 TXT

Windows用户只是一件事