文本不可见 Python

Text not visible Python

为什么我收不到短信?我在很多网站上使用过这个脚本,但从未遇到过这个问题。

import scrapy.selector
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from Prijsvergelijking_Final.items import PrijsvergelijkingFinalItem

vendors = []
for line in open("vendors.txt", "r"):
    vendors.append(line.strip("\n\-"))
e = {}
for vendor in vendors:
    e[vendor] = True

class ArtcrafttvSpider(CrawlSpider):
    name = "ARTCRAFTTV"
    allowed_domains = ["artencraft.be"]
    start_urls = ["https://www.artencraft.be/nl/beeld-en-geluid/televisie"]
    rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//li[@class="next"]',)), callback = "parse_start_url",follow = True),)    
    def parse_start_url(self, response):
        products = response.xpath("//ul[@class='product-overview list']/li")
        for product in products:
            item = PrijsvergelijkingFinalItem()
            item["Product_a"] = product.xpath(".//a/span/h3/text()").extract_first().strip().replace("-","")
            item["Product_price"] = product.xpath(".//a/h4/text()").extract_first()
            for word in item['Product_a'].split(" "):
                if word in e:
                    item['item_vendor'] = word              
            yield item

网站代码:

脚本后的结果是 运行:

有什么解决办法的建议吗?

价格似乎是从 Javascript 或其他地方加载的 - 当我从 Python 下拉页面时,我在任何地方都看不到价格。

这里可能发生两种情况:首先,价格可能会随着 Javascript 加载。如果是这种情况,我建议查看此答案: and the library dryscape

如果价格因为您的用户代理而被屏蔽,您可以尝试将您的用户代理更改为真正的浏览器: .

首先尝试用户代理(因为它更容易)。

简短的回答是:

价格字段值的 xpath 错误

详细:

不要总是假设页面结构与屏幕上显示的相同。 并不总是所见即所得

出于某种原因,我看到 inspect element(firefox) 将价格值显示为 //a/h4 标签的子标签,但如果您要分析页面源代码下载后,您会看到价格值出现在页面上,但它不是 //a/h4 标签的子标签,而是 [=13 标签的子标签=] 标签所以 //a/text() 会给你想要的值