使用Scrapy收集<select> <option>值

时间:2018-07-31 17:16:47

标签: python scrapy web-crawler

我假装使用此页面顶部的下拉列表中的每个列表进行爬网:https://www.anmp.pt/anmp/pro/mun1/mun101w3.php?cod=M2200(具有Scrapy框架)。 然后,对于找到的每个项目,我都会得到一个新页面,在该页面上,我得到了一些更多的数据,这些数据必须填充Models.py中实例化的模型 我可以获取数据,但是无法将其放入模型的flask.Fields()中。我在网上搜索了提示,但没有成功。 蜘蛛网中的“ contacto”字段仅用于收集以下两个字段: 抱歉,名称是葡萄牙语,但这是葡萄牙语应用程序! 这是我的Spider.py: #-*-编码:utf-8-*- 进口沙皮 导入urlparse 从scrapy.http导入FormRequest 从scrapy.loader导入ItemLoader 从municipios.items导入Municipio 导入时间 类GetmunSpider(scrapy.Spider):     名称='getMun'     allowed_domains = ['anmp.pt']     start_urls = ['https://www.anmp.pt/anmp/pro/mun1/mun101w3.php?cod=M2200']     def municipio_attr(自我,回应):         municipios_url = response.xpath('// select / option / @ value')。extract()         用于municipios_url中的municipio:             full_url = [municipios_url中代表我的'https://www.anmp.pt/anmp/pro/mun1/{0}'.format(i)]             产生FormRequest.from_response(str(full_url),callback = self.parse)     def parse(自身,响应):         #dados do municipio         municipio = ItemLoader(项目= Municipio(),响应=响应)         municipio.add_xpath('nome','// div [@ class =“ sel3”] / text()'。extract())         municipio.add_xpath('pres_camara','// div [@ class =“ f3”] / text()'                  [3] .extract()。split(“,”)[0]         municipio.add_xpath('pres_assembleia','// div [@ class =“ f3”] / text()'                  [4] .extract()。split(“,”)[0]         municipio.add_xpath('contacto','// div [@ class =“ sel2”] / text(                  )')。提取()         municipio.add_value('endereco',“” .join(contacto)[:-42])         municipio.add_value('telefone',contacto [2])         municipio.add_value('fax',contacto [3])         返回Municipio.load_item() 这些是要填充的字段: 进口沙皮 从scrapy.item导入项目,字段 Municipio类(scrapy.Item):     Nome = scrapy.Field()     pres_camara = scrapy.Field()     pres_assembleia = scrapy.Field()     endereco = scrapy.Field()     Telefone = scrapy.Field()     传真= scrapy.Field()

0 个答案:

没有答案