我正在寻找页面底部kijji上“下一个”页面按钮的href内的文本。
链接:https://www.kijiji.ca/b-apartments-condos/edmonton/c37l1700203
href是这个:
href="/b-apartments-condos/edmonton/page-2/c37l1700203"
主要问题是,在“分页类”中有多个href,并且它们的顺序并不总是相同(它不一定是第10个href)。
这是我到目前为止所拥有的:
response.xpath("//*[@class='pagination']/a[10]/@href").extract_first()
任何帮助将不胜感激。
答案 0 :(得分:1)
如果需要Next byutton的超引用值,则可以在XPath下面使用:
//a[@title="Next"]/@href
您可以按以下方式使用它:
import requests
from lxml import html
response = requests.get("https://www.kijiji.ca/b-apartments-condos/edmonton/c37l1700203").content
source = html.fromstring(response)
url = source.xpath('//a[@title="Next"]/@href')[0]
答案 1 :(得分:0)
使用BeautifulSoup中内置的CSS选择器的解决方案:
from bs4 import BeautifulSoup
import requests
url = 'https://www.kijiji.ca/b-apartments-condos/edmonton/c37l1700203'
soup = BeautifulSoup(requests.get(url).text, 'lxml')
print(soup.select_one('.pagination a[title^=Next]')['href'])
打印:
/b-apartments-condos/edmonton/page-2/c37l1700203
这将选择以<a>
开头的属性title
的{{1}}标签。此Next
标签必须位于类<a>
的标签下。
答案 2 :(得分:0)
您需要Scrapy:
next_page_url = response.xpath('//a[@title="Next"]/@href').extract_first()
if next_page_url:
next_page_url = response.urljoin(next_page_url)
yield scrapy.Request(url=next_page_url, callback=self.your_callback)