【问题标题】:Extracting full URL from href tag in scrapy从scrapy中的href标签中提取完整的URL
【发布时间】:2020-07-20 12:54:46
【问题描述】:

我正在尝试使用 scrapy 来抓取来自此 site 的报价的 URL

这是我试过的代码:

url = response.css('a[data-tracking="click_body"]::attr(href)').extract()

但我的代码返回的内容与 URL 非常不同。 这是我感兴趣的 div 的 HTML 代码。

<div class="offer-item-details">
                <header class="offer-item-header">
            <h3>
                <a href="https://www.otodom.pl/oferta/gdansk-pod-inwestycje-cicha-lokalizacja-ID46DXu.html#ab04badaa0" data-tracking="click_body" data-tracking-data="{&quot;touch_point_button&quot;:&quot;title&quot;}" data-featured-name="promo_top_ads">
                    <strong class="visible-xs-block">42 m²</strong>
                    <span class="text-nowrap">
                        <span class="offer-item-title">Gdańsk/ Pod Inwestycje/ Cicha Lokalizacja</span>
                    </span>
                </a>
            </h3>
            <p class="text-nowrap"><span class="hidden-xs">Mieszkanie na sprzedaż: </span>Gdańsk, Ujeścisko-Łostowice, Łostowice</p>
                        <div class="vas-list-no-offer">
                <a class="button-observed observe-link favourites-button observed-text svg-heart add-to-favourites" data-statkey="ad.observed.list" rel="nofollow" data-id="60688916" href="#" title="Obserwuj">
                    <div class="observed-text-container" style="display: flex;">

                        <span class="icon observed-60688916"></span>
                        <i class="icon-heart-filled"></i>
                        <div class="observed-label">Dodaj do ulubionych</div>
                    </div>
                </a>
            </div>
        </header>
        <ul class="params
            " data-tracking="click_body" data-tracking-data="{&quot;touch_point_button&quot;:&quot;body&quot;}">
                            <li class="offer-item-rooms hidden-xs">2 pokoje</li>
                                                            <li class="offer-item-price">
                                                                                    346 000 zł                                                                                                                                </li>
                                                                                                                                <li class="hidden-xs offer-item-area">42 m²</li>
                                                                                                                                                                        <li class="hidden-xs offer-item-price-per-m">8 238 zł/m²</li>
                                                                                                                                                                                                                                    </ul>
            </div>

该标签的复制选择器:

#offer-item-ad_id45Wog > div.offer-item-details > header > h3 > a

复制的 xPath

//*[@id="offer-item-ad_id45Wog"]/div[1]/header/h3/a

复制完整的 xPath

/html/body/div[3]/main/section[2]/div/div/div[1]/div/article[1]/div[1]/header/h3/a

【问题讨论】:

    标签: python web-scraping scrapy


    【解决方案1】:

    您的代码为您提供了 URL 列表。本例中的 extract() 方法获取一个列表。要让 scrapy 提取数据,您必须执行 for 循环和 yield 语句。

    url = response.css('a[data-tracking="click_body"]::attr(href)').extract()
    for a in url: 
        yield{'url', a}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2021-10-10
      • 2017-09-30
      • 2020-10-13
      • 1970-01-01
      • 2013-07-12
      相关资源
      最近更新 更多