Xpath或css选择器

2024-05-14 18:14:58 发布

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

我试图选择一个“下一个”的导航链接,似乎无法找到正确的组合选择器在刮。你知道吗

这是网址: search page on boat listing site

我尝试选择的链接是以下标记:

<a rel="nofollow" class="icon-chevron-right " href="/boats-for-sale/condition-used/type-power/class-power-sport-fishing/?year=2006-2014&amp;length=40-65&amp;page=2"><span class="aria-fixes">2</span></a>

我试过很多种响应.xpath以及响应.css但似乎找不到正确的组合。你知道吗

使用google chrome inspector,我得到以下xpath: //*[@id=“root”]/div[2]/div[2]/div[2]/div/div[3]/a[9]

最后,我尝试获取标签的href属性,该属性包含我想要关注的URL。你知道吗

我是不是遇到了rel='nofollow'属性和scrapy设置的问题?你知道吗

编辑-此代码以前可以工作,但现在在css选择器上出现错误:

def parse(self, response):

        listing_objs =  response.xpath("//div[@class = 'listings-container']/a")
        for listing in listing_objs:

            yield response.follow(listing.attrib['href'], callback= self.parse_detail)

        next_page = response.css("a.icon-chevron-right").attrib['href']

        if next_page is not None:
            yield response.follow(next_page, callback = self.parse)

Tags: selfdiv属性parse链接responsepage选择器
2条回答

在这种情况下,您可以通过在URL末尾添加&page=#来访问网站的任何页面,这种方法将满足在当前页面被爬网后访问下一页内容的要求。
例如,你可以这样做:

def start_request(self):
    main_url = "https://www.yachtworld.com/boats-for-sale/condition-used/type-power" \
        "/class-power-sport-fishing/?year=2006-2014&length=40-65&page=%(page)s"
    for i in range(pages):
        yield scrapy.Request(main_url % {'page': i}, callback=self.parse)

@Piron上面的答案可能是对页面进行迭代的最简单方法,但您是否仍希望使用Xpath路径:

response.xpath(".//div[@class='search-page-nav']/a[@class='icon-chevron-right']/@href/text()")

其中,search page nav是其他页面链接的父div类,icon chevron right是您要查找的标记的特定类,@href选择该标记的链接,text()将属性转换为文本。你知道吗

相关问题 更多 >

    热门问题