python - 如何在带有scrapy的元素中选择特定元素
问题描述
import scrapy
class rlgSpider(scrapy.Spider):
name = 'bot'
start_urls = [
'https://rocket-league.com/trading?filterItem=0&filterCertification=0&filterPaint=0&filterPlatform=1&filterSearchType=1&filterItemType=0&p=1']
def parse(self, response):
data = {}
offers = response.xpath('//div[@class = "col-3-3"]')
for offer in offers:
for item in offer.xpath('//div[@class = "rlg-trade-display-container is--user"]/div[@class = "rlg-trade-display-items"]/div[@class = "col-1-2 rlg-trade-display-items-container"]/a'):
data['name'] = item.xpath('//div/div[@position ="relative"]/h2').extarct()
yield data
这是我到目前为止所做的-效果不佳。它会刮掉 url 而不是 h2 标签,当它在这么多 div 中时,我该怎么做?
解决方案
为了解析scrapy中的元素,您需要以“。”开始您的xpath。否则您将解析响应,这是正确的方法。
def parse(self, response):
offers = response.xpath('//div[@class = "col-3-3"]')
for offer in offers:
for item in offer.xpath('.//div[@class = "rlg-trade-display-container is--user"]/div[@class = "rlg-trade-display-items"]/div[@class = "col-1-2 rlg-trade-display-items-container"]/a'):
data = {}
data['name'] = item.xpath('.//h2/text()').extarct_first()
yield data
推荐阅读
- python-3.x - 不知道用机械汤在 select_form 函数中输入什么
- c - UART只传输字符串的第一个和最后一个字符(PIC16F877A通过proteus模拟)
- java - 了解 Java 可变可见性
- javascript - JS从多维数组中删除重复项
- python - 为熊猫中的每个唯一元素添加带有数字的列
- google-cloud-platform - 无法为 Cloud Run 实例设置登录并且无法回滚更改,失去了对我的 Cloud Run URL 的访问权限
- java - findBy UUID 字段始终返回 null 。(MySQL + JAVA + 休眠)
- c++ - 是否存在执行 assign_if(dst, value, predicate) 的 C++ 语义?
- java - 如何使用 Java 中的 Apache Commons Math 库找到矩阵的逆矩阵?
- javascript - 非空对象返回 <
>