我正在编写一个程序,根据搜索字词从网站上抓取文章的网址。目前我只能从第一页抓取文章网址。
我可以访问加载按钮并加载其他文章,但我无法抓取他们的网址。
我已将整个代码拆分为2个单独的模块,以便更清晰。我试图将它们组合成一个单独的模块,但输出只是重复显示第一页的文章URL。我需要帮助将这两个模块组合成一个工作模块。
from retry import retry
from explicit import waiter
from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException
@retry(StaleElementReferenceException, tries=10, delay=0.5)
def click_more(driver):
waiter.find_element(driver, 'div.loadm').click()
driver = webdriver.Chrome()
try:
driver.get("http://www.marketing-interactive.com/?s=digital+marketing")
while True:
click_more(driver)
<script>
var i = 0;
$('#append-btn').click(function(){
var html = '';
html += '<div class="form-group" id="multiselect">';
html += '<label class="col-md-4 control-label" for="rolename">Role Name</label>';
html += '<div class="col-md-4 test">';
html += ' <select id="dates-field2" class="multiselect-ui'+i+' form-control" multiple="multiple">';
html += ' <option value="cheese">Cheese</option>';
html += ' <option value="tomatoes">Tomatoes</option>';
html += ' <option value="mozarella">Mozzarella</option>';
html += ' <option value="mushrooms">Mushrooms</option>';
html += ' <option value="pepperoni">Pepperoni</option>';
html += ' <option value="onions">Onions</option>';
html += ' </select>';
html += '</div>';
html += '</div>';
$(html).appendTo('.div2');
$('.multiselect-ui'+i).multiselect({
includeSelectAllOption: true
});
i++
});
</script>
答案 0 :(得分:0)
实际上没有必要点击“加载更多”,因为当你点击“加载更多”它会发送一个像这样的ajax请求
在这里,您只需更改pageNumber并获取新的数据列表。如果没有可用的文章,它将向您发送空白回复