刮痧问题蜘蛛蟒

2024-05-23 18:14:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在和scrapy一起做一个爬行项目。我想从网站上获取法律法国法律.gouv.fr是的

我正在写一个叫做“进口代码”的代码。我的脚本的思想是解析页面https://www.legifrance.gouv.fr/affichCode.do;jsessionid=F17704445BF9676D75495A907656E918.tpdila14v_3?cidTexte=LEGITEXT000006069577&dateTexte=20160308的摘要 然后我会在每一页的摘要链接。然后我要把每一篇文章都写上他的名字和路线。在这之后,我会把每一篇文章在数据库中能够做的要求。你知道吗

我的问题是,我的剧本是工作,但我有一些臭虫”。我设法找到了那条路,那篇文章的名字,但有时我找不到那篇文章。此外,如果页面上有多篇文章,我不会返回与文章相关联的所有名称。你知道吗

找到一个解决方案将是了不起的!我还在自己找呢。你知道吗

谢谢

这是我的剧本:

import scrapy

from tutorial.items import GouvItem

class GouvSpider(scrapy.Spider):

    name = "gouv"

    allowed_domains = ["legifrance.gouv.fr"]

    start_urls = [

        "http://www.legifrance.gouv.fr/affichCode.do?cidTexte=LEGITEXT000006069577&dateTexte=20160216"

       ]

    def parse(self, response):
        for href in response.xpath(".//span[@class='codeLienArt']/a/@href"):
            url = response.urljoin(href.extract())
            yield scrapy.Request(url, callback=self.parse_article)


    def parse_article(self, response):
        for art in response.xpath(".//div[@class='data']"):
            item = GouvItem()
            item['title1'] = art.xpath("ul/li/a/text()").extract()

            if len(art.xpath("ul/li/ul/li/a/text()").extract()) > 0:
                item['title2'] = art.xpath("ul/li/ul/li/a/text()").extract()

            if len(art.xpath("ul/li/ul/li/ul/li/a/text()").extract()) > 0:
                item['title3'] = art.xpath("ul/li/ul/li/ul/li/a/text()").extract()

            if len(art.xpath("ul/li/ul/li/ul/li/ul/li/a/text()").extract()) > 0:
                item['title4'] = art.xpath("ul/li/ul/li/ul/li/ul/li/a/text()").extract()

            if len(art.xpath("ul/li/ul/li/ul/li/ul/li/ul/li/a/text()").extract()) > 0:
                item['title5'] = art.xpath("ul/li/ul/li/ul/li/ul/li/ul/li/a/text()").extract()

            if len(art.xpath("ul/li/ul/li/ul/li/ul/li/ul/li/ul/li/a/text()").extract()) > 0:
                item['title6'] = art.xpath("ul/li/ul/li/ul/li/ul/li/ul/li/ul/li/a/text()").extract()

            item['title7'] = art.xpath(".//div[@class='titreSection']/text()").extract()

            yield item

        for titreart in response.xpath(".//div[@class='article']"):
            item = GouvItem()
            item['title_art'] = titreart.xpath(".//text()").extract()
            yield item

使用过滤器后,我得到以下结果:

[{“title1”:[“Livre premier:Assiette et liquition de l'impôt”],“title2”:[“Première Partie:impôts d'\u00c9tat”],“title3”:[“Titre premier:impôts directs et taxes assimiles”],“title4”:[“Chapitre premier:imp sur le revenu”],“title5”:[“第一节:处分”],“title7”:[“0I:Dédefinition du revenu net global”]}, {“article”:[“article 1 A”,“Crépar”,“Loi 2005-1719 2005-12-30 art。74 I pour 2006 JORF 31 décembre 2005“,”这是一个独特的年度收入表,用于人员的身体设计。“第156条至第168条”,“Ce revenu net global est constituépar le total des revenus nets des catégories suvantes:”,“-revenus fonciers;”,“-Bénéfices industriels et commerciaux;”,“-Rémunérations,d'un part,主要负责社会责任限制的政府机构的财政体制。第三条第55-594条于1955年5月20日修改了社会责任的政府机构的行政行为,个人和社会成员参与社会资本财政体制改革协会,“-非商业性和辅助性的职业和收入;”,“-流动性资本收入;”,“-加上自然权利的价值让渡,确定符合性和处置”,“第14条至第155条”,“第156条规定的费用总额。”,]}, {“title1”:[“Livre II:Requivrement de l'impôt”],“title2”:[“Chapitre V:Dégrèvements et restitutions D'impôts”],“title7”:[“第四节:处分公社”]}, {“条款”:[“第1965 L条”,“修改条款”,“2000年9月19日第2000-916号命令-第。7(V)JORF 22 Septemberre 2000 en vigueur le 1er janvier 2002,“Les dégrèvements ou restitutions de toutes importations ou crénces fiscales d'un montant inférier 8€ne sont pas effectués.”,“Ce montant s'apprécie par cote,exercie ou affaire.”和“]}, {“title1”:[“Livre II:赔偿损失”],“title2”:[“Chapitre V:赔偿损失与恢复原状”],“title3”:[“Section II:司法诉讼内容”],“title7”:[“9:处分-特别是间接贡献”], {“article”:[“article 1965 FA”,“Modifiépar”,“Loi n°86-1318 du 30 décembre 1986-art。24 JORF 31 décembre 1986年,“获得间接权利的人员,获得报酬的权利,获得报酬的权利,获得报酬的权利。”,]}, {“title1”:[“Livre II:Requivrement de l'impôt”],“title2”:[“Chapitre V:Dégrèvements et restorations D'impôts”],“title3”:[“第二节:司法”内容“],”标题7“:[“8:登记权的特别处分,公共基金税,不动产担保金,音色权和保证税”]}


Tags: textlenifresponsearticleextractliitem
1条回答
网友
1楼 · 发布于 2024-05-23 18:14:50

您可以使用xpath ('//span[@class="TM1Code"]')在该页上找到两个标题1,类似地,可以使用('//span[@class="TM2Code"]')找到标题2。这些xpath应该比您当前使用的ul/li字符串更可靠。TMnCodes一直到反映文档继承权的tm8代码。你知道吗

我建议您在TM1Code xpath上创建一个循环,以获得您想要的每一篇文章的信息。你知道吗

相关问题 更多 >