如何使用response.css获取带有scrapy的类中的元素

mfuanj7w  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(143)

我正在尝试从以下位置获取value=“3474636382675”:
<input class="lst" value="3474636382675" title="Zoeken" autocomplete="off" id="sbhost" maxlength="2048" name="q" type="text"
我试过了

response.css(".lst >value").extract()

这一个工作,但我得到的一切回来,我只是需要的价值。

response.css(".lst").extract()
dohp0rv5

dohp0rv51#

使用CSS,您可以像这样选择所需的属性:

response.css(".lst::attr(value)").extract()

您可以在Scrapy的documentation中了解更多有关选择器的信息

tzxcd3kk

tzxcd3kk2#

我用beautiful soup来解析html,这里有一个从雅虎财经获取股票价格的例子。

import urllib.request
from bs4 import BeautifulSoup

def getPrice(tag):
    source = "https://finance.yahoo.com/quote/"+tag
    filehandle = urllib.request.urlopen(source)
    soup = BeautifulSoup(filehandle.read(), "html.parser")
    priceSpan = soup.findAll("span", { "class" : "Fz(36px)" })
    for k in priceSpan:
        return(k.getText())

def getDayChange(tag):
    source = "https://finance.yahoo.com/quote/"+tag
    filehandle = urllib.request.urlopen(source)
    soup = BeautifulSoup(filehandle.read(), "html.parser")
    priceSpan = soup.findAll("span", { "class" : "Fw(500)" })
    for k in priceSpan:
        return(k.getText())

https://gist.github.com/Krewn/0e624d35c396df63262dd42d74f2beb6

yduiuuwa

yduiuuwa3#

不太确定css。但是来自另一个SO答案的here is one。或者尝试xpath:

response.xpath('//input[@class="lst"]/@value').extract()

或者如果只需要一个值:

response.xpath('//input[@class="lst"]/@value').extract_first()

相关问题