我想使用Python Scrapy下载https://www.infoclimat.fr/historic/
中包含的信息以下是我需要的列:重要性,日期,日期,类型,本地化,描述(可选)。
Items.py
class ClimatItem(Item):
importance = Field()
date_start = Field()
date_end = Field()
type = Field()
localisation = Field()
description = Field()
但是,无法通过源代码访问它们。它们似乎包含在一些javascript脚本中,以为我不太了解Web结构。
有人可以帮帮我吗?几天以来我一直在研究这个问题,但无法在任何地方找到任何解决方案。非常感谢。
答案 0 :(得分:3)
似乎通过AJAX检索数据。由于scrapy不执行任何javascript,您需要手动复制此行为。
幸运的是,在这种情况下可以轻松复制。如果您在浏览器的检查工具中查看网络标签,则会在加载网页时看到正在发出GET XHR请求:
它返回一个json,其中包含表中的所有数据。
所以要在scrapy中复制这个,你需要:
例如,我有这个工作:
def parse(self, response):
url = """https://www.infoclimat.fr/historic/getData.php?importance=&valfilter=1&operator=%3E&evalue=&duree=0&type=0&lieu=0&dh_deb=&dh_end=&mois=&year=&sEcho=2&iColumns=9&sColumns=&iDisplayStart=30&iDisplayLength=30&sSearch=&bRegex=false&sSearch_0=&bRegex_0=false&bSearchable_0=true&sSearch_1=&bRegex_1=false&bSearchable_1=true&sSearch_2=&bRegex_2=false&bSearchable_2=true&sSearch_3=&bRegex_3=false&bSearchable_3=true&sSearch_4=&bRegex_4=false&bSearchable_4=true&sSearch_5=&bRegex_5=false&bSearchable_5=true&sSearch_6=&bRegex_6=false&bSearchable_6=true&sSearch_7=&bRegex_7=false&bSearchable_7=true&sSearch_8=&bRegex_8=false&bSearchable_8=true&iSortingCols=1&iSortCol_0=2&sSortDir_0=desc&bSortable_0=true&bSortable_1=true&bSortable_2=true&bSortable_3=true&bSortable_4=true&bSortable_5=true&bSortable_6=false&bSortable_7=true&bSortable_8=true&_=1501841738200"""
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
}
yield Request(url, self.parse_json, headers=headers)
def parse_json(self, response):
data = json.loads(response.body)
# here you can inspect json data and pick out the fields you need
答案 1 :(得分:0)