Scrapy不会从我的url中删除项目:Crawled(200)/Referer:Non

2024-10-01 04:46:48 发布

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

我想从一个网站上删掉几页。为此,我有不同的起始URL和一个方法来抓取下一页。 问题是爬行器不会丢弃项目,也不会爬行指定的页面。我没有结果。 你有什么办法解决这个问题吗?在

这是代码

    class ListeCourse_level1(scrapy.Spider):
        name = nom_robot
        allowed_domains = domaine

        start_urls = url_lister()
        print(start_urls)
        print('-----------------------------')

        def parse(self, response):    

            selector = Selector(response)    

            for unElement in response.xpath('//*[@id="td-outer-wrap"]/div[3]/div/div/div[1]/div/div[2]/div[3]/table/tbody/tr'): 
                loader = ItemLoader(JustrunlahItem(), selector=unElement)

                loader.add_xpath('eve_nom_evenement', './/td[2]/div/div[1]/div/a/text()')
                loader.add_xpath('eve_date_deb', './/td[1]/div/text()')
loader.default_input_processor = MapCompose(string) 
                loader.default_output_processor = Join()

                yield loader.load_item()

提取shell窗口

^{pr2}$

Tags: textdivadddefaultresponseloadereveurls
2条回答

从浏览器的开发人员工具中复制元素xpath将使您得到只与该元素匹配的内容。
即使这样,浏览器有时也需要修改html才能显示它,而且由于xpath是超特定的,所以有可能连1个匹配项都得不到。在

怎么解决这个问题?在

看看html,找到相关的元素、类和id,然后自己编写xpath。
例如,像//tr这样简单的东西可以匹配您试图与//*[@id="td-outer-wrap"]/div[3]/div/div/div[1]/div/div[2]/div[3]/table/tbody/tr匹配的所有元素。在

正如@stranac所说,问题来自Xpath。目前,当我在Google控制台中复制元素的Xpath时,有一个tbody标记。但是源代码中没有这个标记。正如@gangabass解释的here,这是“一个常见的问题:有时表的源HTML中没有tbody标记(现代浏览器会自动将其添加到DOM中)”。我删除了它,提取成功了,但它没有按我想要的方式组织(一行代表一个事件),我把所有的提取数据都放在一个单元格中。在

相关问题 更多 >