零碎的Xpath输出为空

2024-10-02 08:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从这个网站上提取数据:http://www.pokepedia.fr/Pikachu 我正在学习python和如何使用Scrapy,我的问题是:为什么我不能用Xpath检索数据?在

当我在浏览器中测试Xpath时,它会返回正确的值。(谷歌Chrome)

import re
from scrapy import Spider
from scrapy.selector import Selector

from stack.items import StackItem


class StackSpider(Spider):
name = "stack"
allowed_domains = ["pokepedia.fr"]
start_urls = [
    "http://www.pokepedia.fr/Pikachu",
]

def unicodize(seg):
    if re.match(r'\\u[0-9a-f]{4}', seg):
        return seg.decode('unicode-escape')

    return seg.decode('utf-8')

def parse(self, response):
    pokemon = Selector(response).xpath('//*[@id="mw-content-text"]/table[2]')

    for question in pokemon:
        item = StackItem()
        item['title'] = question.xpath(
            '//*[@id="mw-content-text"]/table[2]/tbody/tr[1]/th[2]/text()').extract()[0]
        yield item

我想在页面中提取口袋妖怪的名字,但当我使用:

^{pr2}$

我的Json输出:

[

在我的控制台中有一个错误:

IndexError : list index out of range

我听了这首短裙:https://realpython.com/blog/python/web-scraping-with-scrapy-and-mongodb/


Tags: 数据textfromimportrehttpwwwfr
1条回答
网友
1楼 · 发布于 2024-10-02 08:26:59

试试这个

question.xpath( '//*[@id="mw-content-text"]/table[2]/tr[1]/th[2]/text()').extract()[0]

浏览器会添加tbody标记。它们不是原始的HTML格式,这就是scrapy返回空文件的原因。在

附言:你可以考虑使用

^{pr2}$

然后用

response.xpath('...YOUR SELECTOR..')

用于调试和测试。在

相关问题 更多 >

    热门问题