我想从一个网站上删掉几页。为此,我有不同的起始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}$
从浏览器的开发人员工具中复制元素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中)”。我删除了它,提取成功了,但它没有按我想要的方式组织(一行代表一个事件),我把所有的提取数据都放在一个单元格中。在相关问题 更多 >
编程相关推荐