Python中文
首页
教程
问答
标签
搜索
登录
注册
如何抓取一个树结构的网站,并保持在输出的Json-fi结构
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图抓取一个有树结构的网站,我想在输出的json文件中重新创建树结构。在</p> <p>所有的页面都有相同的结构,我必须从一个页面中获取一些字段,然后转到每个链接的子页面并获得相同的字段,等等。。。在</p> <p>json文件中的项输出如下所示(简化后):</p> <pre><code>{"Organiation": [{"Administration": "name_adm", "Rattachement": ["ratt_a", "ratt_b"], "Organiation": [{"Administration": "name_adm", "Rattachement": ["ratt_a", "ratt_b"], "Organiation": [{"Administration": "name_adm", "Rattachement": ["ratt_a", "ratt_b"], "Organiation": [null] }], "Organiation": [{"Administration": "name_adm", "Rattachement": ["ratt_a", "ratt_b"], "Organiation": [{"Administration": "name_adm", "Rattachement":["ratt_a", "ratt_b"], "Organiation": [null] }] }] }] }] } </code></pre> <p>我之所以能这样做,是为了每页获得一个项目:</p> ^{pr2}$ <p>我花了很多时间试图找到一种方法来实现这一点,但是没有成功,我探索了递归性的选项,但是我没能让它工作,主要是因为我现在不知道如何使用“callback”递归地进行解析(parse函数见下面的代码)。在</p> <p>以下是我目前所得到的:</p> <pre><code>def parse(self, response): for url in response.xpath('//ul[@class = "list-arrow list-narrow"]/li/a/@href').extract(): yield scrapy.Request(url, callback=self.parse_dir_contents) def parse_dir_contents(self, response): page = PageItem() page['Administration'] = response.xpath('//div[@class = "panel-body"]/p/span/text()' ).extract() Rattachements = [] for site in response.xpath('//ul[@class ="list-connected"]/li'): Rattachements.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(site.xpath('a/text()').extract()) page['Rattachement'] = Rattachements Organisations = [] for site in response.xpath('//ul[@data-test="organizations"]/li/a'): Organisations.append(site.xpath('text()').extract()) page['Organisation'] = Organisations yield page URLS = response.xpath('//ul[@data-test="organizations"]/li/a/@href').extract() for url in URLS: yield scrapy.Request(url, callback=self.parse_dir_contents) </code></pre> <p>最后一段代码允许我将每一页放在一个项目中:</p> <pre><code> URLS = response.xpath('//ul[@data-test="organizations"]/li/a/@href').extract() for url in URLS: yield scrapy.Request(url, callback=self.parse_dir_contents) </code></pre> <p>URL是指向给定页面的下一级子页面的链接。在</p> <p>当我不能得到树结构时,下一个最佳的想法是把子页面链接的文本列表放入“组织”,但是如果我能得到树结构,我就不需要把这个列表保存在“组织”中。在</p> <p>如何更改代码以便在Json输出中保留网站的树结构。在</p> <p>谢谢</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>尝试使用jsonmerge<a href="https://pypi.python.org/pypi/jsonmerge" rel="nofollow">jsonmerge</a>包将当前输出合并在一起。在</p> <p>并在所有合并完成后返回项,您可以使用空闲处理程序来实现这一点。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
5 回答
如何将python中的列表插入SQL表
1 回答
如何将python中的列表转换为numpy数组以放入十位
9 回答
如何将python中的列表输入javascript?
3 回答
如何将python中的列表返回给dag?
7 回答
如何将Python中的列表项重新排列成成对的元组/列表?
3 回答
如何将Python中的初始化对象序列化为XML?
8 回答
如何将python中的十进制字符串转换为数字?
2 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
10 回答
如何将python中的反斜杠命令转换为在Linux上运行
1 回答
如何将python中的命令行参数转换为字典?
5 回答
如何将python中的图像值传递到kivy中的kv文件?
3 回答
如何将Python中的图像数组(枕头对象)上传到Google云
2 回答
如何将Python中的图像编码为Base64?
3 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
6 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
9 回答
如何将Python中的多个ifelse语句重构为一个函数?
1 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
6 回答
如何将python中的多级API响应转换为dataframe
1 回答
如何将python中的多线程编程模型转换为异步/等待模型?
2 回答