Python Scrapy如何勾选复选框并在刮取特定数据之前进行搜索

2024-06-28 15:33:49 发布

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

我得到了这个网站https://www.ingenieurs-ensea.fr/annuaire/recherche

我需要在2023、2022、2021框中打勾,然后点击带有输入提交类型的搜索按钮

在接下来的页面上,我得到了一个包含700多个姓名和30多页描述的列表,我需要在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

它只会产生一堆错误,所以我猜它是超级坏的


Tags: fromselfdivparseresponsedefcallbackitems
1条回答
网友
1楼 · 发布于 2024-06-28 15:33:49

请使用此链接。我从“网络”选项卡中获得:

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

相关问题 更多 >