Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 1:我的spider在csv文件上一行代码中为我提供了所有结果_Python_Scrapy_Web Crawler - Fatal编程技术网

Python 1:我的spider在csv文件上一行代码中为我提供了所有结果

Python 1:我的spider在csv文件上一行代码中为我提供了所有结果,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,首先,如果我先使用extract_,scrapy会给我每个页面的第一个元素,如果我这样运行它,它会返回我想要的所有内容,但只返回一行 第二,我不能让scrapy转到我刚刚抓取的链接并从这些链接中获取信息,返回一个空的csv文件 from scrapy import Spider from companies.items import CompaniesItem import re class companiesSpider(Spider): name = "companies"

首先,如果我先使用extract_,scrapy会给我每个页面的第一个元素,如果我这样运行它,它会返回我想要的所有内容,但只返回一行

第二,我不能让scrapy转到我刚刚抓取的链接并从这些链接中获取信息,返回一个空的csv文件

from scrapy import Spider
from companies.items import CompaniesItem
import re

class companiesSpider(Spider):
    name = "companies"
    allowed_domains = ['http://startup.miami',]
    # Defining the list of pages to scrape
    start_urls = ["http://startup.miami/category/startups/page/" + str(1*i) + "/" for i in range(0, 10)]

    def parse(self, response):
        rows = response.xpath('//*[@id="datafetch"]')

        for row in rows: 
            link = row.xpath('.//h2/a/@href').extract()

            name = row.xpath('.//header/h2/a/text()').extract()


            item = CompaniesItem()
            item['link'] = link
            item['name'] = name

            yield item

您的解析方法未生成任何请求或项。在下面的部分中,我们将浏览这些页面并获取URL和名称。在parse_详细信息中,可以向项目添加其他数据。 我们不必硬编码到10页,而是检查是否有下一页,如果有,则再次进行解析

from scrapy import Spider
from ..items import CompaniesItem
import scrapy


class CompaniesSpider(Spider):
    name = "companies"
    allowed_domains = ['startup.miami']
    # Defining the list of pages to scrape
    start_urls = ["http://startup.miami/category/startups/"]

    def parse(self, response):
        # get link & name and send item to parse_detail in meta
        rows = response.xpath('//*[@id="datafetch"]/article')
        for row in rows:
            link = row.xpath('.//@href').extract_first()
            name = row.xpath(
                './/*[@class="textoCoworking"]/text()').extract_first()
            item = CompaniesItem()
            item['link'] = link
            item['name'] = name.strip()
            yield scrapy.Request(link,
                                 callback=self.parse_detail,
                                 meta={'item': item})
        # get the next page
        next_page = response.xpath(
            '//*[@class="next page-numbers"]/@href').extract_first()
        if next_page:
            yield scrapy.Request(next_page, callback=self.parse)

    def parse_detail(self, response):
        item = response.meta['item']
        # add other details to the item here
        yield item


要将结果放入csv文件中,您可以像这样启动刮板:
scrapy crawl companys-o test_companys.csv

谢谢您,Wim,不幸的是,这不起作用。此外,我还需要获取我试图获取的链接中的信息。我发布的代码有很多问题-现在编辑和测试,应该可以更好地工作。试着这样运行:
scrapy crawl companies-s LOG\u LEVEL=DEBUG-o test\u companies.csv
,看看您是否能得到正确的请求响应。Genius!这非常有效。非常感谢你的帮助!