python - Scrapy Spider 不返回任何信息

标签 python python-3.x xpath scrapy scrapy-spider

我是一名学生,我正在为一个项目收集有关品牌的信息。我找到了这个名为 Kit 的网站:Kit Page我想搜索品牌。它有将近 500 页,我用 Python 3 编写了一个 Scrapy Spider,遍历每个页面并将列表复制到字典,但我无法弄清楚 xpath 或 css 来实际获取列表信息。这是我的 items.py:

import scrapy

class KitcreatorwebscraperItem(scrapy.Item):
    creator = scrapy.Field()

这是我的蜘蛛:

import scrapy

class KitCreatorSpider(scrapy.Spider):
    name = "kitCreators"
    pageNumber = 1

    start_urls = [
        'https://kit.com/brands?page=1',
    ]

    while pageNumber <= 478:
        newUrl = "https://kit.com/brands?page=" + str(pageNumber)
        start_urls.append(newUrl)
        pageNumber += 1

    def parse(self, response):
        for li in response.xpath('//div[@class="section group"][0]'):

它运行成功,但我一直无法编写获取所需数据的 xpath。什么路径是必需的,我如何在代码中实现它?

最佳答案

您可以尝试在 Xpath 下提取品牌名称:

//a[@class="brandsView-list-item-link ng-binding"]/text()

附言我建议您不要创建 URL 列表。这似乎是一段多余的代码。相反,您可以使用 for 循环,例如:

for page_number in range(479):
    url = "https://kit.com/brands?page=%s" % page_number
    ...handle current page source...

更新

You can try Selenium + PhantomJS从动态内容中获取所需数据:

from selenium import webdriver

driver = webdriver.PhantomJS()
brands_list = []

for page in range(1, 480):
    driver.get("https://kit.com/brands?page=%s" % page)
    [brands_list.append(brand.text) for brand in driver.find_elements_by_xpath('//a[@class="brandsView-list-item-link ng-binding"]')]

print(brands_list)

关于python - Scrapy Spider 不返回任何信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44977591/

相关文章:

selenium - 机器人框架: passing argument to a keyword that returns an XPath

python - django多图片上传将上传的图片存储在列表中

python - Eclipse:打开文件夹上的资源

python - 导入父目录中另一个文件夹中的文件

xslt - 使用 document() 在 XSLT 中交叉引用和扩充 XML 元素的问题

Python Scrapy 不断从下一页按钮获取同一页面链接

python - 在 Tensorflow CIFAR-10 教程中拆分训练/验证中的数据

python - 如何使 re.search() 尝试最佳尝试方法

python-3.x - 使用 Python 遍历 Clang AST

python-3.x - 为 Python 3.5 安装 NumPy