我对列表项的class属性感到困惑,在无序列表中。
我提到我正在编写一个python程序来从一个网站抓取,该网站以ul列表中的li元素为目标。 ul里面有45个li元素,其中17个没有分配给它们的“class”属性。这是ul的一部分。
我的自定义目标选择器是“ul.vacanciesList li”,我只获得17个没有“class”关键字的选择器。
我的问题是,li元素的标记中出现的“class”关键字是什么,以及如何定位它们(li-s)以获取所有45个,而不仅仅是没有类的
自定义代码:
'title' => ['selector' => 'h3'],
'containerSelector' => 'ul.vacanciesList li',
'detailSelector' => '#bigbox',
'location' => ['selector' => 'div.place'],
谢谢。
答案 0 :(得分:1)
空属性(没有值的属性)有效。 <tag class>
或""
只表示该元素属于类soup = bs4.BeautifulSoup(page, 'lxml')
litems = soup.findAll('li', {'class' : ''})
。有关详细信息,请阅读此answer。
查找列表项:
ul
或者,您可以找到class
标记,该标记的listitems
属性值已分配给它,并从那里获取所有soup = bs4.BeautifulSoup(page, 'lxml')
# get the unordered list of interest
unordered_list = soup.finqd('ul', {'class' : 'article vacanciesList'})
# extract all the list items from them
list_items = unordered_list.findAll('li')
print(list_items)
。
var logger = new winston.Logger({
transports: [
new winston.transports.File({
level: 'info',
filename: './logs/all-logs.log',
handleExceptions: true,
json: true,
maxsize: 5242880, //5MB
maxFiles: 5,
colorize: false
})
],
exitOnError: false
}),
logger.stream = {
write: function(message, encoding){
logger.info(message);
}
};
app.use(require("morgan")("combined", { "stream": logger.stream }));