我正在和scrapy一起做一个爬行项目。我在试着从legifrance.gouv.fr网站上获取法律。
我正在编写名为"code généal des imp called“的代码。我的脚本的想法是解析页面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 Chapitre de l‘Impét ","title2":"Première Partie :Impáts d'\u00c9tat","title3":"Titre premier :Impóts directs et par assimilées","title4":"Chapitre :Impót sur le revenu","title5":"Section :Disposition générales","title7":"0I : Définition du revenu net global"},{“文章”:“第1条A ",”Crépar“,“意向书2005-1719 2005-12-30艺术。74我的财务倾注2006 JORF 31 décembre 2005","Il estétabli un impót annuel独特的sur le revenu des personnes désignésous le nom d‘impót sur le revenu“。全球税收净额",“第156条”,“168条”。、"Ce revenu net global est constituépar le total des revenus net des catégories suivantes :","-Revenus fonciers ;","-Bénéfices industriels et commerciaux;","-Rémunérations,d‘’une part,des gérants mai des sociétés de -Bénéfices part,des associés n‘’ayant pas optépour le régime ces des sétés de personnes dans les conditions prévues au IV de l‘第3 du décretés de 594 du 20 mai 1955 modifiéet des gérants des sociétés en commandite par action et,d’‘autre part,des associés n des sociétés de personnes et des membresétés en actionsétés ont optéle régime社会资本;","-Bénéfices de l’des ;",-Traitements,salaires,indemnités de moluments,et membresèg;","-Bénéfices des professions commerciales revenus y assimilés ;","-Revenus de capitaux;",“--尊重自然,符合权利或处分",”第14条",“第155条",”完全不再重新交易费用énuméréesàl‘第156条",},{"title1":"Livre II :恢复权利“,"title2":”第五章:权利与赔偿“,"title7":”第四节:处分“},{”文章“:”1965年L条“,"Modifiépar”,“2000年9月19日军法第2000-916号-- art。7 (V) 2000年9月22日JORF 22 en vigueur le 1er janvier 2002",“Les dégrèrestitutions ou créances fiscales d‘’un inférieurà8 et inférieurà8 et pas Efftutés.”,“Ce montant s‘’apprécie par cote,exercice ou affaire.",},{"title1":"Livre II : Recouvrement de l‘’impót”,"title2":"Chapitre :dégrèrestitutions et restitutions d‘’impéts“,"title3":”第二节:司法争议“,"title7":"9 : Dispositionsèreères aux‘impáttes”},{“条款”:“1965年FA条","Modifiépar ","Loi n°86-1318 du 30décembre 1986 --第24 JORF 31 décembre 1986",“Lorsqu‘’une a vementsédes droits indirect ts régis par préprésent code,elle peut en obtenir le reputire.,àmoins que que droits n‘’aientétérérépercutés sur l‘’acheteur.”,},{"title1":"Livre II : Recouvrement de l‘’impót“,"title2":"Chapitre :dégrètitle3 d‘’impóts”,"title3":“第二节:诉讼争议”,"title7":"8 : Dispositionsères aux droit d‘vementsétérépercutés sur l’‘acheteur“,à”“Livre II :Recouvrement de l’‘impót”,“title3”:“第二节:诉讼争议”,“title7”:“8:Dispositionsères aux droit d’‘enregistrement de l’‘enregistrement de foncière,à”*,
发布于 2016-03-09 16:57:14
您可以使用xpath ('//span[@class="TM1Code"]')在该页面上找到这两个title1s,类似地,可以使用('//span[@class="TM2Code"]')找到title2s。这些xpath应该比您当前使用的ul/li字符串更可靠。TMnCodes一直延伸到TM8Code,反映了文档的层级结构。
我建议您创建一个遍历TM1Code xpath的循环,以获取每篇文章所需的信息。
https://stackoverflow.com/questions/35869861
复制相似问题