Я перебираю несколько китайских веб-сайтов для исследовательского проекта и столкнулся с проблемой, которую я просто не могу взломать.Используя scrapy, я пытаюсь перейти по ссылке в теге с именем класса «вверх» (этот тег является одним из многих тегов в навигационной панели).Проблема в том, что ни селекторы CSS, ни Xpath не могут «захватить» тег.Я в состоянии получить его родительский тег div просто отлично, но когда я пытаюсь получить доступ к его дочерним элементам, scrapy возвращает пустой список.Вот структура родительского элемента div и его дочерних тегов:
<div class="xz-page clearfix" style="margin-left:160px;">
<script type="text/javascript"> ... </script>
<a class="pre" href="javascript:void(0)" style="width:40px">上一页</a>
<a class="num sel" href="javascript:void(0)">1</a>
<a class="num" href="index_1.html">2</a>
<a class="num" href="index_2.html">3</a>
<a href="javascript:void(0)" style="border:none">...</a>
<a class="num" href="index_697.html">698</a>
<a class="num" href="index_698.html">699</a>
<a class="up" href="index_1.html" style="width:40px">下一页</a>
</div>
Ссылка, которую я пытаюсь получить, - это ссылка в последнем.
Когда я использую селектор:
next_page = response.xpath('//div[@class = "xz-page clearfix"])
Возвращает это:
[<Selector xpath='//div[@class = "xz-page clearfix"]' data='<div class="xz-pageclearfix" style="mar'>]
Но когда я пытаюсь получить доступ к тегу с этим:
next_page = response.xpath('//div[@class = "xz-page clearfix"]/a[@class ="up"]')
Или только это, пытаясь захватить всеchildren:
next_page = response.xpath('//div[@class = "xz-page clearfix"]/a')
Возвращает пустой список []
Я пробовал несколько итераций вышеупомянутого селектора, и каждый раз получал пустой список.
Даже просто пытаясь получить тег с этим:
next_page = response.xpath('//a[@class = "up"]')
Возвращает пустой список
Я подозреваю, что это как-то связано с тегом script.
Скрипт внутритег script выглядит следующим образом:
<script type="text/javascript">
function createPageHTML(_nPageCount, _nCurrIndex, _sPageName, _sPageExt){
if(_nPageCount == null || _nPageCount<=1){
return;
}
var nCurrIndex = _nCurrIndex || 0;
// 1 输出首页和上一页
// 1.1 当前页是首页
if(nCurrIndex == 0){
document.write("<a class=\"pre\" href=\"javascript:void(0)\" style=\"width:40px\">上一页</a>");
document.write("<a class=\"num sel\" href=\"javascript:void(0)\">1</a>");
}
//1.2 当前页不是首页
else{
var nPreIndex = nCurrIndex - 1;
var sPreFileExt = nPreIndex == 0 ? "" : ("_" + nPreIndex);
document.write("<a class=\"next\" href=\"" + _sPageName + sPreFileExt + "."+_sPageExt+"\" style=\"width:40px\">上一页</a>");
document.write("<a class=\"num\" href=\""+_sPageName+"."+_sPageExt+"\">1</a>");
}
// 2 输出中间分页
var flag1=true;
var flag2=true;
for(var i=1; i<_nPageCount; i++){
if(i-nCurrIndex<3&&nCurrIndex-i<3||i<2||_nPageCount-i<3){
if(nCurrIndex == i)
document.write("<a class=\"num sel\" href=\"javascript:void(0)\">"+(i+1)+"</a>");
else
document.write("<a class=\"num\" href=\""+_sPageName+"_" + i + "."+_sPageExt+"\">"+(i+1)+"</a>");
}
else if(i-nCurrIndex>3&&flag1){
flag1=false;
document.write("<a href=\"javascript:void(0)\" style=\"border:none\">...</a>");
}
else if(nCurrIndex-i>3&&flag2){
flag2=false;
document.write("<a href=\"javascript:void(0)\" style=\"border:none\">...</a>");
}
}
// 3 输出下一页和尾页
// 3.1 当前页是尾页
if(nCurrIndex == (_nPageCount-1)){
document.write("<a class=\"up\" href=\"javascript:void(0)\" style=\"width:40px\">下一页</a> ");
//document.write("<li><a href=\""+_sPageName+"_" + (_nPageCount-1) + "."+_sPageExt+"\">尾页</a></li>");
}
// 3.2 当前页不是尾页
else{
var nNextIndex = nCurrIndex + 1;
var sPreFileExt = nPreIndex == 0 ? "" : ("_" + nPreIndex);
document.write("<a class=\"up\" href=\""+_sPageName+"_" + nNextIndex + "."+_sPageExt+"\" style=\"width:40px\">下一页</a> ");
//document.write("<li><a href=\""+_sPageName+"_" + (_nPageCount-1) + "."+_sPageExt+"\">尾页</a></li>");
}
}
createPageHTML(699, 0, "index", "html");
</script>
Я не знаю JS, поэтому я не совсем уверен, что делает этот код.У меня нет проблем с доступом ко всем остальным частям страницы, которую я хочу почистить, только один этот тег вызывает у меня проблемы.Это только один из китайских сайтов, с которыми у меня проблемы, однако английские источники, которые я вычищаю, не доставили мне проблем.Я не уверен, является ли проблема моей неопытностью в изучении веб-страниц или что-то необычное происходит с китайскими сайтами.
Для справки: http://www.xizang.gov.cn/xwzx/qnyw/index.html - это веб-страница, которую я пытаюсь почистить.Кнопка для перехода на следующую страницу внизу - вот что доставляет мне неприятности.
Буду очень признателен за любой совет или помощь.Спасибо!