python - Python Scrapy - 如何在抓取特定数据之前勾选复选框和搜索
问题描述
我得到了这个网站https://www.ingenieurs-ensea.fr/annuaire/recherche
我需要勾选 2023、2022、2021 框,然后点击具有输入提交类型的搜索按钮。
在随后的页面上,我在 30 多页中获得了 700 多个名称和描述的列表,我需要在 Excel 中作为 3 个单独的表格(例如,单独列中描述的名称 + 排名和年份)
我尝试了各种缝合尝试,但没有奏效。
这是我最后一次尝试,但总体上我有点迷失了。
class Names(scrapy.Spider):
name = 'enseafr'
settings = get_project_settings()
start_urls = ['https://www.ingenieurs-ensea.fr/annuaire/recherche',]
def parse(self, response):
yield scrapy.FormRequest.from_response(
response,
formdata={'DiplomePromo[]':'2023'},
formname='DiplomePromo1',
callback= self.parse_2,
method= "POST",
)
def parse_2(self, response):
yield scrapy.FormRequest.from_response(
response,
formdata={'DiplomePromo[]': '2022'},
formname='DiplomePromo2',
callback=self.parse_3,
method="POST",
)
def parse_3(self, response):
yield scrapy.FormRequest.from_response(
response,
formdata={'DiplomePromo[]': '2021'},
formname='DiplomePromo3',
callback=self.after_parse,
method="POST",
)
def after_parse(self, response):
yield scrapy.FormRequest.from_response(
response,
formdata= {'': 'RECHERCHER'},
callback = self.data,
method = "POST",
)
def data(self, response):
items = IngItems()
for item in response.xpath('//div[@class="annuaire_result_list"'):
items['name'] = item.xpath('//*[@id="zoneAnnuaire_layout"]/div[3]/div[2]/div[3]/div[1]/div[2]/div[1]/a/text()').get()
items['description'] = item.xpath('//*[@id="zoneAnnuaire_layout"]/div[3]/div[2]/div[3]/div[1]/div[2]/div[2]/div[1]').get()
yield items
它只会产生一堆错误,所以我猜它超级坏
解决方案
请改用此链接。我从“网络”选项卡中得到它:
https://www.ingenieurs-ensea.fr/annuaire/recherche?result=1&annuaire_mode=standard&annuaire_as_no=&keyword=&PersonneNom=&PersonnePrenom=&DiplomePromo%5B%5D=2023&DiplomePromo%5B%5D=2022&DiplomePromo%5B%5D=2021
推荐阅读
- google-chrome - Chromium 将名称带有变音符号的文件重命名为“download (n)”
- azure - 将 Azure DevOps 服务与 Azure DevOps on-prem Repos 和 Build/Release 结合使用。那可行吗?
- mysql - 在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列“jquzntys.posts.id”
- ansible - 使用 getent 获取用户和用户目录
- reactjs - 在连接组件上使用浅层时酶错误:“浅层渲染仅适用于自定义组件”
- linux - PHP进程内存泄漏
- php - Laravel:缓存记住永远关闭不运行
- http - 在本地服务器上隐藏机密文本文件
- c++ - 如何在c ++中从字符串评估算术运算
- typescript - 为什么 webpack 无法加载块?