首页 > 解决方案 > 如何使用scrapy python提取写在h4标签之外的文本

问题描述

蓝色的字段标记,那些是我要刮的字段

<div class="txt-block">
   <h4 class="inline">Budget:</h4>
   "€650,000
                         "
   <span class="attribute">(estimated)</span>
</div>

我想抓取 h4 标签之外的数据,即 650,000 欧元。我怎样才能在python中使用scrapy css来做到这一点。

我正在尝试这个,但它返回多个字段。

item['Budget'] = response.css(".txt-block h4:not(span)::text").extract()

标签: pythonweb-scrapingscrapyimdb

解决方案


看来您正在寻找真实的演示。查看以下实现:

import requests
from scrapy import Selector

url = "https://www.imdb.com/title/tt0111161/?pf_rd_m=A2FGELUUNOQJNL&pf_rd_p=e31d89dd-322d-4646-8962-327b42fe94b1&pf_rd_r=702AB91P12YZ9Z98XH5T&pf_rd_s=center-1&pf_rd_t=15506&pf_rd_i=top&ref_=chttp_tt_1"

res = requests.get(url)
sel = Selector(res)
budget = ' '.join(sel.css(".txt-block:contains('Budget')::text").extract()).strip()
gross = ' '.join(sel.css(".txt-block:contains('Gross USA')::text").extract()).strip()
cumulative = ' '.join(sel.css(".txt-block:contains('Cumulative Worldwide')::text").extract()).strip()
print(f'budget: {budget}\ngross: {gross}\ncumulative: {cumulative}')

此时输出:

budget: $25,000,000
gross: $28,341,469
cumulative: $58,500,000

推荐阅读