我正在使用Scrapy并试图刮掉这 url,当我请求页面上任何有关产品的数据时,我就会把它拿出来。但是带有分页器类和id=paginator1的div作为空返回,即使它是一个具有对下一页的引用的表。我尝试过对表和css选择器使用xPath选择器,但两者都返回为空。这就是我尝试过的,使用css
In [29]: response.css('span a::attr(href)').extract() Out[29]: ['/registration/formregistration/new', '/', '/catalog/solntsezaschitnye_ochki', 'http://wezom.com.ua/prodvizhenie']
和
In [31]: response.xpath('//*[@id="paginator1"]/table/tbody/tr[1]/td[2]/span') Out[31]: []
发布于 2018-02-24 21:35:32
分页是使用JavaScript生成的,您可以在HTML中看到:
<div class="paginator" id="paginator1"></div>
<div class="paginator_pages">Страниц: 14</div>
<script type="text/javascript">
/*pag1 = new Paginator("id div", vsego stranic, kol-vo na stranice, tekuchay stranica, "url");*/
pag1 = new Paginator("paginator1", 14, 10, 1, "/catalog/s_o_u_l_/page/", "/catalog/s_o_u_l_");
</script>您可以从<script>块中提取所有相关信息:
import ast
script = response.xpath('//script[contains(text(), "paginator1")]/text()').extract()[0].strip()
paginator = script.splitlines()[1].strip().split('new Paginator')[1].rstrip(';')
paginatorHolderId, pagesTotal, pagesSpan, pageCurrent, baseUrl = ast.literal_eval(paginator)然后,您可以根据分页脚本中的逻辑构建分页URL(或者只查看URL的样子)。
发布于 2018-02-24 21:35:20
如果您查看实际的html源代码(response.text),您将看到以下内容:
<div class="paginator" id="paginator1"></div>
<div class="paginator_pages">Страниц: 14</div>
<script type="text/javascript">
/*pag1 = new Paginator("id div", vsego stranic, kol-vo na stranice, tekuchay stranica, "url");*/
pag1 = new Paginator("paginator1", 14, 10, 1, "/catalog/s_o_u_l_/page/", "/catalog/s_o_u_l_");
</script>如您所见,div确实是空的,并且是通过javascript填充的。
您有两个选项可以获得这些链接:
https://stackoverflow.com/questions/48967679
复制相似问题