抓取网站后没有数据

时间:2017-05-22 10:24:21

标签: python web-scraping scrapy scrapy-spider

我想使用Scrapy从网站https://www.internationaltelecomsweek.com中删除所有名称。

这是在项目文件中。

import scrapy
class ItwItem(scrapy.Item):
    name = scrapy.Field()

这是我的蜘蛛。

import scrapy
from itw.items import ItwItem
class ItwSpider(scrapy.Spider):

        name = 'itw'

        allowed_domains = ['https://www.internationaltelecomsweek.com']

        start_urls = ['https://www.internationaltelecomsweek.com/this-year/companies-attending']

        def parse(self, response):
        data= json.loads(response.body)
        for i in data:
        item["name"] = i["DisplayName"]
        return item

当我运行scrapy时,我只得到一个空白的csv文件。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎会动态生成与会者列表,并且每个与会者都作为JSON对象返回。

scrapy shell中加载该网站,然后检查view(response)以查看您的蜘蛛实际可以阅读的内容。您将看到该页面在浏览器中没有返回任何内容,您可以看到与会者。

如果您检查网络选项卡以查看哪些请求正在传递给服务器,您将看到从this URL传递的与会者列表,每个都作为JSON对象传递。

您需要做的是:解析产生JSON对象的URL并在scrapy中使用JSON处理它们:

import json

data = json.loads(response.body)
for i in data:
    item["name"] = i["DisplayName"]