我想使用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文件。我究竟做错了什么?
答案 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"]